const 与 #define 的比较

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

相信只要看过有关C++优化的动物都知道,那些优化条款中总会提到: 用 const 来代替 #define,我一直以来也是这么做,并且很少怀疑过,但今天却发现了一个 const 的不足之处:

相信只要看过有关C++优化的动物都知道,那些优化条款中总会提到: 用 const 来代替 #define,我一直以来也是这么做,并且很少怀疑过,但今天却发现了一个 const 的不足之处:

const int i=0;

void main()

{

printf("address of const i:%08X\n",&i);

}

对于以上的代码,我希望编译的时候提示出错,但很可惜,没有任何错误发生

再来看看,

const int i=0;

void main()

{

int *p=(int*)&i;

*p=33;

}

编译,通过!!但程序一运行就立即发生不人见人爱的非法操作..-_-

从上面的2则代码中,我们可以看出

(1) const 也需要占用内存,并且需要占用文件空间,这对程序来讲,无疑是种残酷的折磨

不过,当遇到访问这个变量时语句时,编译器会用常数而不是内存寻址的方式

(2) 在一定的程度来讲, const 会导致严重的后果,一但代码比较多,这种错误往往难以被发现

所以,我还是建议要用常量的朋友用#define(看看自带的.h,哪个不是用#define的?),如果你对#define还是觉得不怎样,那还可以试试用enum

(测试环境: VS6.0,Win98Se)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航