Reputation: 3307
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).
Upvotes: 8
Views: 4540
Reputation: 43662
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.
Upvotes: 11
Reputation: 363787
GCC manual, section Common Predefined Macros, states
The common predefined macros are GNU C extensions.
I've also never seen this macro in the C99, C11 or C++11 standards.
As for practical portability: Clang supports it, too.
Upvotes: 3
Reputation: 10427
It seems NO. When I ctrl+f "__COUNTER__" on standard pdf, I couldn't find anything >o<
Upvotes: 1