我有以下用例
#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;
答案 0 :(得分:0)
不,没有解决方法。只有一个预处理器传递。
如评论中所述,C ++模板要容易得多。它们由真正的编译器编译,它支持更复杂的语法,可以进行数学运算,并且可以进行255级嵌套。