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
您必须扩展宏:
#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)