“宁可以编译器替换预处理器”:

 

一、宏定义的名字被编译器看不到:

条款02:尽量以const,enum,inline替换 #define

 

 

二、关于class常量

 

条款02:尽量以const,enum,inline替换 #define

 

 

三、宏不注重作用域

条款02:尽量以const,enum,inline替换 #define

条款02:尽量以const,enum,inline替换 #define

 

 

四、the enum hack

条款02:尽量以const,enum,inline替换 #define

 

条款02:尽量以const,enum,inline替换 #define

 

所以,如果我们如果不想别人获得一个指针或引用指向你的某个整数常量,enum可以帮助你约束。

 

条款02:尽量以const,enum,inline替换 #define

 

 

五、宏定义max函数的缺陷

          宏只是单纯的替换

条款02:尽量以const,enum,inline替换 #define

 

 

条款02:尽量以const,enum,inline替换 #define

 

 

 

总结:

1、对于单纯常量,最好以const对象或 enums替换#defines。
2、对于形似函数的宏( macros),最好改用inline函数替换#defines。

 

相关文章: