为什么很多人使用#define而不是const定义常量

 我来答
imkarayi9d4f
2018-01-16 · TA获得超过1552个赞
知道小有建树答主
回答量:1164
采纳率:85%
帮助的人:602万
展开全部
在大规模的开发过程中,特别是跨平台和系统的软件里跨平台编译时,
一般都使用 #define 定义常量,主要是为了兼容性。
但是,从安全角度考虑,还是建议使用const定义常量。
#define是宏常量,无语法检测,只是字符替换。
而且,#define 不是语句 不要在行末加分号,否则会连分号一块置换。
所以我们在定义的时候,要养成一个良好的习惯,建议所有的层次都要加括号。
const常量有数据类型,而宏常量没有数据类型。
编译器可以对const常量进行类型安全检查。
而对宏常量只进行字符替换,没有类型安全检查,
并且在字符替换可能会产生意料不到的错误(边际效应)。
const定义常量从汇编的角度来看,
只是给出了对应的内存地址,
而不是象#define一样给出的是立即数,
所以,const定义的常量在程序运行过程中只有一份拷贝
(因为是全局的只读变量,存在静态区),
而 #define定义的常量在内存中有若干个拷贝。
因此,const相对提高了编译效率。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式