【发布时间】:2014-12-22 23:10:44
【问题描述】:
我正在尝试使用__COUNTER__ 宏在我的代码中生成唯一的变量名称。但是宏似乎不起作用。我可能以错误的方式使用它。请给我指点或建议我做错了什么。
#define DUMB_MACRO() ht##__COUNTER__
应该给我ht0,ht1....
我在主文件中的调用方式是
DUMB_MACRO();
但是编译器说如果我尝试使用ht0 变量,它不会解析符号ht__COUNTER__。
我也尝试使用__CONCAT 宏,但我无法将变量传递给它。
例如:__CONCAT(ht,1) 工作并给我ht1 但__CONCAT(ht,i) 其中i 是一个变量,表示值1 不起作用,因为它的值在编译时未知.
【问题讨论】:
-
请注意
__COUNTER__是一个 GNU 扩展;它不一定可移植到 g++ 以外的编译器(clang++ 似乎也支持它)。 (除非它最近被添加到标准中)。
标签: c++ macros c-preprocessor counter