private extern, what is that?

Function declarations and variable declarations can have private
extern as storage class.

I sought in the C and C++ standards for 'private extern' but I found nothing.
What does private extern mean?
When the clang's AST can have private extern in one of its vertices?

thanks
pb

It's an Apple extension.

-Eli

Function declarations and variable declarations can have private
extern as storage class.

I sought in the C and C++ standards for ‘private extern’ but I found nothing.
What does private extern mean?
When the clang’s AST can have private extern in one of its vertices?

thanks
pb

Declaring a symbol as private extern (using the private_extern keyword) is equivalent to declare it using attribute((visibility(“hidden”)))

http://developer.apple.com/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html

and

http://developer.apple.com/documentation/developertools/conceptual/MachOTopics/Articles/executing_files.html

A private external symbol is a defined external symbol that is visible only to other modules within the same object file as the module that contains it. The standard static linker changes private external symbols into private defined symbols unless you specify otherwise (using the -keep_private_externs flag).

You can mark a symbol as private external by using the __private_extern__ keyword (which works only in C) or the visibility("hidden")attribute (which works both in C and C++ with GCC 4.0), as in this example: