- #define 定义的符号可能没有被编译器看见,生成符号表的时候没有被存与symbol内,define还可能会是宏 名称替换,导致目标码生成多份数值,解决方法 const int
- 当我们想要封装性时候,在类里声明一个static变量,#define 没有封装性,并没有private define 这种东西。
- 有一些老版的编译器不支持static在其声明式上获得初值,这时候我们使用enmu枚举变量型,enum 比较像define 而不像const ,enum 和define 一样不能被取地址
-
#define txt(a,b) f( (a) > ( b) ? (a) : (b) ) int a=5,b=0; txt(++a,b); // a 被累加2次 txt(++a,b+10); // a被累加1次
a的增长次数取决于和谁比
- #ifdef/ifndef还是扮演了很重要的角色