const与define的对比

1.const是关键字define不是。

2.#define 定义的宏常量在内存中有若干个拷贝(即哪块出现宏常量就对齐进行替换,),而const 修饰的只读变量是在编译的时候确定其值。并不为其分配内存,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高,同时,这也是它取代预定义语句的重要基础。

3。const定义也像一个普通的变量定义一样,它会由编译器对它进行类型的检测,而define宏不支持类型,无法进行类型检测,这对于强类型语言来说,无疑是难以接受的。

4.define宏进行文本替换时,只是进行简单的文本替换,容易产生二义性。

如,#define M 2+2,int a=M*M;//M*M就相当于2+2*2+2=8.而我们想得到的是(2+2)*(2+2)=16,

猜你喜欢

转载自blog.csdn.net/woainilixuhao/article/details/86525635
今日推荐