__COUNTER__ 宏是否可移植?

2022-01-11 00:00:00 macros c++ c-preprocessor

I have a piece of code which uses __COUNTER__ macro to generate unique names for variables.

Is this code portable ? I know that GCC and MSVS support it. What's about other compilers ? Is the macro defined by standard (as far as I know before C++14 it wasn't).

解决方案

It's definitely not standard.

It's a compiler extension (GNU C extensions)

The common predefined macros are GNU C extensions.

and a Microsoft-specific one,

Microsoft-Specific Predefined Macros:

__ COUNTER __

also supported by clang as language extension.

The standard doesn't mention it anywhere.

相关文章