一丶define
#define: 预处理宏定义命令
其中 #:预处理命令,表示这是一条预处理命令
define:宏定义命令
分为无参和有参两种,分别如下所示:
无参: #define 标识符 字符串
有参:#define M(a) ((a) + (a)) ps:有参时,每个实参必须加上小括号
作用:
1.在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换.(这称为“宏代换”或“宏展开”)
2.防止头文件重复定义
注意事项:
不重视作用域,一旦被定义,它就在其后的编译过程中有效(除非遇到#undef),因此不能用来定义类专属常量,也不具有封装性
二丶enum hack
1.一个属于枚举类型的数值可权充为ints被使用
2.取enum地址不合法,取#define地址同样不合法
3.Enums不会导致非必要的内存分配,#define同样不会
4.模板元编程的技术基础
总结:
1.对于单纯变量,最好以const或enum代替#define
2.对于形似函数的宏,最好用inline函数代替#define