C++——有关#define的讨论
结论:尽量不要使用#define
常见用法:
#define PI 3.14 //建议用const/enum替换 #define MAX(a, b) (a) > (b) ? (a) : (b) //建议用inline替换
改进:
const double pi = 3.14; enum { pi = 3.14 }; inline int Max(const int& a, const int& b) { return a > b ? a : b; }
使用#define
可能引发的问题
#define
在预处理阶段处理;而const
enum
inline
在编译阶段处理
可能导致
#define
的内容没有进入记号表,编译器不会提示替换前的记号例如上述代码中,编译器报错只会提示
3.14
不会提示PI
可能导致
#define
的内容出现多份例如上述代码中,多个
PI
出现的地方,就会出现多个3.14
#define
无视作用域,只能#undef
解除没有C++的封装特性
参考文献
[1] Effective C++ 改善程序与设计的55个具体做法
相关推荐
文山羊 2020-11-07
susmote 2020-11-07
拉斯厄尔高福 2020-11-04
xceman 2020-10-23
hellojunz 2020-10-23
caojhuangy 2020-10-12
xinyupan 2020-09-28
lousir 2020-09-27
一个逗逗 2020-09-22
Maryhuan 2020-09-20
rkhstar 2020-09-09
DreamSnow 2020-09-09
aehousmantao 2020-09-03
tkernel 2020-09-03
abfdada 2020-08-26
svap 2020-08-25
二十不悔三十而立 2020-08-19
FlightForever 2020-08-17
joyjoy0 2020-08-13