先说结论:
此处引用竞天问的回答
define变量和作为编译开关是两种不同的用法,书上说的替代只是前者
- 不要相信网上鼓吹使用const能完全取代的#define的文章!
- 目前以c++目前的状况,不可能以任何方式完全取代#define的作用!
- 尽量避免使用#define,是在const等函数体能取代#define的作用下!
1.先看个简单的、不能替代的例子(编译开关)
a.h
#define Z 1
b.h
#include
此例子,const等函数根本无法取代#define。
2. 能取代的例子(变量)
引用自
(C++)举例说明可以使用const代替#define以消除#define的不安全性_爱上小公举-CSDN博客blog.csdn.netint
此处就会引起歧义,我们会认为输出为T2= 0
但实际上输出为T2= 2
其原因是C++把cout << "T2= " << T2 << endl ; 解释成了cout<<"T2= " << a+a-a+a << endl ;
但如果换成const就不会引起此错误, 例如 :
int
输出就为t2= 0
当作为变量时,尽量使用const等函数使cpp文件中代码逻辑更清晰。