【问题标题】:__COUNTER__ macro problems. Not displaying the value__COUNTER__ 宏问题。不显示值
【发布时间】: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


【解决方案1】:

你必须扩展宏:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    相关资源
    最近更新 更多