是__COUNTER__宏可移植的

Is __COUNTER__ macro portable?

本文关键字:可移植 COUNTER      更新时间:2023-10-16

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

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

这绝对不是标准。

这是一个编译器扩展(GNU C扩展)

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

和微软特有的

Microsoft特定预定义宏:

__计数器__

clang也支持作为语言扩展。

标准中没有提到它。

GCC手册"通用预定义宏"一节规定

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

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

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

似乎。当我在标准pdf上ctrl+f"__COUNTER__"时,我找不到任何>o<