__COUNTER__宏观问题.不显示该值

__COUNTER__ macro problems. Not displaying the value

本文关键字:显示 问题 COUNTER 宏观      更新时间:2023-10-16

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

#define DUMB_MACRO() ht##__COUNTER__

应该给我ht0,ht1....

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

DUMB_MACRO();

但是编译器说如果我尝试使用变量ht__COUNTER__它不会解析符号ht0

我也尝试使用 __CONCAT 宏,但我无法将变量传递到其中。

例如:
__CONCAT(ht,1)工作并给了我ht1__CONCAT(ht,i),其中i是一个变量,表示值1不起作用,因为它的值在编译时未知。

您必须展开宏:

#define MACRO3(s) ht##s
#define MACRO2(s) MACRO3(s)
#define MACRO MACRO2(__COUNTER__)
int MACRO ;  //ht0
int MACRO ;  //ht1