ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[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 可以用于定义简单的类型替换 除非万不得已,否则是不会用宏来代理子程序