Is __COUNTER__ macro portable?

I have a piece of code that uses a macro __COUNTER__

to generate unique names for variables.

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


source to share

3 answers

He definitely is n't .

This is a compiler extension ( GNU C extensions )

Common predefined macros are GNU C extensions.

and Microsoft-specific ,

Predefined Macros for Microsoft:


clang is also supported as a language extension.

The standard does not mention it anywhere .



GCC Manual, section General Predefined Macros , specify

Common predefined macros are GNU C extensions.

I also haven't seen this macro in the C99, C11, or C ++ 11 standards.

As for practical portability: Clang supports it as well.



It seems NO . When I ctrl + f "__COUNTER__" to standard pdf , I didn't find anything> o <



All Articles