标签:改善 设计 effective 代码 return 编译 特性 替换 预处理
#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个具体做法
标签:改善 设计 effective 代码 return 编译 特性 替换 预处理
原文地址:https://www.cnblogs.com/thatWangCheng/p/12324571.html