🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 错误的宏 bad: ``` #define Cube(a) a*a*a ``` a 可以为 a+1 bad: ``` #define Cube(a) (a)*(a)*(a) ``` 如果在使用`cube()`的表达式里含有比乘法运算符优先级更高的运算符,那么`(a)*(a)*(a)`也会再次失效。 good: ``` #define Cube(a) ((a)*(a)*(a)) ``` ### 可用给子程序命名的方法来给展开后代码形同子程序的宏命名 ## 宏子程序在使用上的限制 C++取代宏的方案: * const 可以用于定义常量 * inline 可以用于定义可被编译为内嵌的代码( inline code)的函数 * template 可以用于以类型安全的方式定义各种标准操作,如min、max等 * enum 可以用于定义枚举类型 * typedef 可以用于定义简单的类型替换 除非万不得已,否则是不会用宏来代理子程序