请问头文件常量的定义?

假如我在程序头文件的位置写上这两句代码中的一句

#define num 5
const int num=5;

请问有什么区别吗?都是不会变化的常量吗

阅读 4k
2 个回答

这可不一样,通俗的说(更多请去查看编译原理,以下观点只是适合初学者)

  • #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;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进