11 April 2023

C++ 核心指南目录

“If you must use macros, give them unique names”

理由

宏不遵循作用域范围规则。

例子

#define MYCHAR        /* BAD, will eventually clash with someone else's MYCHAR*/

#define ZCORP_CHAR    /* Still evil, but less likely to clash */

注意

尽量避免使用宏。然而,世界上有大量的代码散乱着各种宏。对宏的过度使用也有相当长的传统。如果你不得不使用宏,请用长名称,并添加独一无二的前缀(比如你的组织的名字),以降低名称冲突的可能性。

强化

对短的宏名称提出警告。