define宏常量和const常量的区别
发布网友
发布时间:2022-04-07 08:46
我来回答
共2个回答
热心网友
时间:2022-04-07 10:15
1.define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。const定义的常量,在程序运行时在常量表中,系统为它分配内存。
2.define定义的常量,预处理时只是直接进行了替换。所以编译时不能进行数据类型检验。const定义的常量,在编译时进行严格的类型检验,可以避免出错。
3.define定义表达式时要注意“边缘效应”,
4. const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。
5. 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。规则5-2-1:在C++ 程序中只使用const 常量而不使用宏常量,即const 常量完全取代宏常量。
热心网友
时间:2022-04-07 11:33
#define语句指定一个字符串替换的规则,编译程序负责将你程序中符合规则的字符串进行替换,可替换的不仅限于常量,还可以替换程序、语句、函数名这些
常量仅限于数值、字符串这些能给变量赋值的内容