calvin
calvin

Reputation: 567

What happens if you nest extern "C"?

It looks like nesting extern "C" is legal. For example:

extern "C" extern "C" void foo();

The second extern "C" is essentially ignored. Is that guaranteed by the C++ standard? Where?

Upvotes: 13

Views: 1501

Answers (1)

calvin
calvin

Reputation: 567

Yes, but it's actually the first extern "C" that's ignored. To quote the standard [dcl.link]:

Linkage specifications nest. When linkage specifications nest, the innermost one determines the language linkage.

Upvotes: 27

Related Questions