This topic applies to C/C++ applications for Linux* only.
You can explicitly set the visibility of an individual symbol using the visibility attribute on a data or function declaration. For example:
int i __attribute__ ((visibility("default")));
void __attribute__ ((visibility("hidden"))) x () {...}
extern void y() __attribute__ ((visibility("protected")));
The visibility declaration attribute accepts one of the five keywords:
external
default
protected
hidden
internal
The value of the visibility declaration attribute overrides the default set by the options -fpic or -fno-common .