tommyk
tommyk

Reputation: 3307

Is __COUNTER__ macro portable?

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

Answers (3)

Marco A.
Marco A.

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

Fred Foo
Fred Foo

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

ikh
ikh

Reputation: 10427

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

Upvotes: 1

Related Questions