“宁可以编译器替换预处理器”:
一、宏定义的名字被编译器看不到:
二、关于class常量
三、宏不注重作用域
四、the enum hack
所以,如果我们如果不想别人获得一个指针或引用指向你的某个整数常量,enum可以帮助你约束。
五、宏定义max函数的缺陷
宏只是单纯的替换
总结:
1、对于单纯常量,最好以const对象或 enums替换#defines。
2、对于形似函数的宏( macros),最好改用inline函数替换#defines。