__COUNTER__宏可移植吗?

时间:2014-10-02 11:53:59

标签: c++ macros c-preprocessor

我有一段代码使用__COUNTER__宏来为变量生成唯一的名称。

此代码是否可移植?我知道GCC和MSVS支持它。其他编译器是什么?宏是由标准定义的(据我所知,在C ++ 14之前它不是)。

3 个答案:

答案 0 :(得分:4)

它绝对是标准。

它是编译器扩展(GNU C extensions

  

常见的预定义宏是GNU C扩展。

Microsoft-specific one

  

Microsoft特定的预定义宏:

     

__ COUNTER __

也受clang语言扩展支持。

The standard doesn't mention it anywhere

答案 1 :(得分:2)

GCC手册,第Common Predefined Macros部分,陈述

  

常见的预定义宏是GNU C扩展。

我在C99,C11或C ++ 11标准中也从未见过这个宏。

至于实用的便携性:Clang也支持它。

答案 2 :(得分:0)

似乎。当我在standard pdf上按c + +“__ COUNTER__”时,我找不到任何> o<

相关问题