__COUNTER__ 宏问题。不显示值

use*_*837 3 c++ macros counter c-preprocessor

我正在尝试使用__COUNTER__宏在我的代码中生成唯一的变量名称。但是这个宏好像不起作用。我可能以错误的方式使用它。请向我提供有关我做错了什么的指示或建议。

#define DUMB_MACRO() ht##__COUNTER__

应该给我 ht0,ht1....

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

DUMB_MACRO();

ht__COUNTER__但编译器表示,如果我尝试使用变量,它不会解析该符号ht0

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

例如:
__CONCAT(ht,1)有效并给了我ht1,但是变量__CONCAT(ht,i)在哪里保存说该值不起作用,因为它的值在编译时未知。i1

250*_*501 5

您必须扩展宏:

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

int MACRO ;  //ht0
int MACRO ;  //ht1
Run Code Online (Sandbox Code Playgroud)