不应使用宏定义类型
3.2.9 ID_macro_typeid
宏用于文本处理,不受作用域等语言规则限制,不应使用宏实现类型等语言层面的概念。
示例:
namespace U {
#define Type int // Non-compliant
}
namespace V {
#define Type long // Non-compliant
}
void foo(Type); // Unreliable
例中 Type 的最终定义是 long,第二个宏定义会覆盖第一个宏定义,这显然是不可靠的。