c - 请问头文件常量的定义?

查看:178
本文介绍了c - 请问头文件常量的定义?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

#define num 5
const int num=5;

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

解决方案

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

  • #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;

这篇关于c - 请问头文件常量的定义?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆