__COUNTER__宏观问题。不显示值

时间:2014-12-22 23:10:45

标签: c++ macros c-preprocessor counter

我正在尝试使用__COUNTER__宏在我的代码中生成唯一的变量名。但宏似乎不起作用。我可能以错误的方式使用它。请给我指出或建议我做错了什么。

#define DUMB_MACRO() ht##__COUNTER__

应该给我ht0,ht1 ....

我在主文件中调用它的方式是

DUMB_MACRO();

但编译器表示,如果我尝试使用ht__COUNTER__变量,它就无法解析符号ht0

我也尝试使用__CONCAT宏但我无法将变量传递给它。

例如:
__CONCAT(ht,1)有效ht1__CONCAT(ht,i) i其中1是一个变量,表示值{{1}}无法正常工作,因为其价值未知在编译时。

1 个答案:

答案 0 :(得分:2)

你必须扩展宏:

#define MACRO3(s) ht##s
#define MACRO2(s) MACRO3(s)
#define MACRO MACRO2(__COUNTER__)

int MACRO ;  //ht0
int MACRO ;  //ht1