我正在尝试使用__COUNTER__
宏在我的代码中生成唯一的变量名。但宏似乎不起作用。我可能以错误的方式使用它。请给我指出或建议我做错了什么。
#define DUMB_MACRO() ht##__COUNTER__
应该给我ht0,ht1 ....
我在主文件中调用它的方式是
DUMB_MACRO();
但编译器表示,如果我尝试使用ht__COUNTER__
变量,它就无法解析符号ht0
。
我也尝试使用__CONCAT
宏但我无法将变量传递给它。
例如:
__CONCAT(ht,1)
有效ht1
,__CONCAT(ht,i)
i
其中1
是一个变量,表示值{{1}}无法正常工作,因为其价值未知在编译时。
答案 0 :(得分:2)
你必须扩展宏:
#define MACRO3(s) ht##s
#define MACRO2(s) MACRO3(s)
#define MACRO MACRO2(__COUNTER__)
int MACRO ; //ht0
int MACRO ; //ht1