避免使用宏
宏是一种文本替换设施,宏替换发生在编译器的预处理阶段,此时C++的语法和语义规则并未去作用,无法对宏的进行任何检查,这将为后续生成代码的编译埋下隐患。此外。宏语法仅能理解小括号和方括号,并不识别template的方括号<>。举例:
MACRO( Foo<int,double> )
虽然Foo<int, double>是一个C++实体,但是上面的宏将解读为传入Foo<int 和 double>两个参数。
C++中用于取代宏的语法:
常数----使用const和enum;
函数展开---inline内联函数
名称冲突----namespace
通用函数----template