这可不一样,通俗的说(更多请去查看编译原理,以下观点只是适合初学者) #define 在编译时,会将源代码按照define定义的值,全部替换掉,然后编译成相关机器码(具体实现肯定会更复杂,这只是简单地说) const 定义的东西(你可以理解为变量吧),还是需要在运行时占用堆栈区的 所以,你可以define任何东西 #define Q_DECL_IMPORT __declspec(dllimport) class Q_DECL_IMPORT Abc {} //此句在编译时会变成 class __declspec(dllimport) Abc {} #define max(a,b) (((a) > (b)) ? (a) : (b)) int i = max(123,38); //此句在编译时会变成 int i = 123 > 38 ? 123 : 38;
这可不一样,通俗的说(更多请去查看编译原理,以下观点只是适合初学者)
#define 在编译时,会将源代码按照define定义的值,全部替换掉,然后编译成相关机器码(具体实现肯定会更复杂,这只是简单地说)
const 定义的东西(你可以理解为变量吧),还是需要在运行时占用堆栈区的
所以,你可以define任何东西