本站首页    管理页面    写新日志    退出


#define与const的差别 
zhu_ruixian 发表于 2007/3/27 14:32:23

虽然他们在使用中感觉“差不多”,但是他们在实现上有什么区别? 请看下面的代码: #define T 13 /*用#define定义的一个常量T*/ int main() {     const int t=13;/*用const定义的一个常量*/     int n=t;/*把t赋值给n*/     int m=T;/*把T赋值给m*/ } 1.差别: const与#define最大的差别在于:前者在堆栈分配了空间,而后者只是把具体数值直接传递到目标变量罢了。或者说,const的常量是一个Run-Time的概念,他在程序中确确实实的存在可以被调用、传递。而#define常量则是一个Compile-Time概念,它的生命周期止于编译期:在实际程序中他只是一个常数、一个命令中的参数,没有实际的存在。 const常量存在于程序的数据段. #define常量存在于程序的代码段。 2优缺点: 至于两者的优缺点,要看具体的情况了。一般的常数应用,我个人认为#define是一个更好的选择: i.从run-time的角度来看,他在空间上和时间上都有很好优势。 ii.从compile-time的角度来看,类似m=t*10的代码不会被编译器优化,t*10的操作需要在run-time执行。而#define的常量会被合并。 但是:如果你需要粗鲁的修改常数的值,那就的使用const了,因为后者在程序中没有实际的存在. 另外在头文件中使用 #define  可以避免头文件重复包含的问题,这个功能,是const无法取代的。

阅读全文(11602) | 回复(3) | 编辑 | 精华

回复:#define与const的差别
xiaoyao(游客)发表评论于2011/8/8 11:44:34

我用openvxi实现键盘输入除了问题,能不能教我下如何修改openvxi实现键盘输入啊

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:#define与const的差别
我(游客)发表评论于2011/3/29 21:04:48

学习了····
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:#define与const的差别
(游客)发表评论于2009/11/13 11:17:15

cosnt对象默认为文件的局部变量,所以是可以在头文件中存在. #ifndef #define 的功能确实是const不能完成的
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31

  公告
欢迎大家留言!既然来了,多少说两句!呵呵!

 


  我的分类(专题)
  最近日志

  最新评论

  留言板

  链接


  Blog信息
blog名称:
日志总数:33
评论数量:61
留言数量:-8
访问次数:235266
建立时间:2006年4月27日



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144751369 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号