【发布时间】:2013-02-01 15:07:33
【问题描述】:
我有以下用例
#define ConstantDouble( T )\
T( Alert, c_alert )
// I want to generate #define macro's dynamically
#define T( x, y ) #define #x y <-- Error
ConstantDouble( T )
#undef T
#define Constant( x ) Constants::x ; <-- x is Alert and I want the prev #define to kick in and convert this to c_alert
// Want to generate members variables directly
class Constants
{
#define T( x, y ) static double y;
ConstantDouble( T )
#undef T
};
这有解决方法吗?
我想以我的名义拥有这样的东西
Constant( "Alert" ) 转换为Constants::c_alert;
【问题讨论】:
-
这不是 C,而是 C++!您可以使用各种预处理器技巧在 C 中执行类似的操作(查找“xmacros”),但既然您使用的是 C++,为什么不直接使用模板呢?
-
你能举个模板的例子吗?
-
我也许可以,但首先我需要你解释一下整个构造的目的是什么。为什么要写
Constant("Alert"),得到c_alert?
标签: c++ macros c-preprocessor