0

我有以下用例

#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;

4

1 回答 1

0

不,没有解决方法。只有一个预处理器通道。

如评论中所述,C++ 模板要容易得多。它们由真正的编译器编译,它支持更复杂的语法,可以进行数学运算,并且可以进行 255 级嵌套。

于 2016-06-29T12:18:14.783 回答