How*_*May 0 c++ macros enums namespaces
我正在扩展一个定义全局TRUE和FALSE标记的现有组件.我的扩展是在新命名空间'new_namespace'中定义一个枚举'new_enum',其值为TRUE和FALSE.由于命名空间冲突,编译器无法编译它.
#define FALSE (0)
#define TRUE (1)
namespace new_namespace {
class new_class {
public :
enum new_enum {
TRUE = (0),
FALSE = (1)
};
};
}
Run Code Online (Sandbox Code Playgroud)
我希望这会得到支持......我错过了什么.
最好的祝福
宏由预处理器处理,(正如其名称所示)在编译器正确之前运行.它的作用是用宏体中的文本替换宏"调用".那么enum
在预处理器步骤之后你看起来像什么,以及实际编译器看到的是:
enum new_enum {
(1) = (0),
(0) = (1)
};
Run Code Online (Sandbox Code Playgroud)
这不是合法的C++,也不是编译器抱怨的原因.