【发布时间】:2014-06-15 22:14:42
【问题描述】:
我想编写一个有一个参数的宏,并将这个参数添加到一个枚举中并创建一个具有相同名称的类。在 C++ 中可能吗?如果是,比如何?
为了更清楚,这里是我想做的一个例子:
我这样调用宏:
REGISTER(A);
REGISTER(B);
REGISTER(C);
或者像这样调用宏:
REGISTER(A, B, C);
我想让预处理器生成这样的代码:
enum X { E_A, E_B, E_C };
class A {};
class B {};
class C {};
【问题讨论】:
-
这是一种快速消除歧义的方法。
-
感谢您指出。我修复了它,但这并没有改变问题的目标。
-
对于与类名冲突的
enum值:您也可以考虑使用 C++11 的enum class恕我直言,这将以更优雅的方式防止问题。
标签: c++ macros c-preprocessor