Specifies the default visibility for global symbols or the visibility for symbols in a file.
Windows: None
Linux: Data > Default Symbol Visibility
Mac OS X: Data > Default Symbol Visibility
IA-32, Intel® 64, IA-64 architectures
Linux and Mac OS X: | -fvisibility=keyword -fvisibility-keyword=file |
Windows: | None |
keyword |
Specifies the visibility setting. Possible values are:
|
file |
Is the pathname of a file containing the list of symbols whose visibility you want to set. The symbols must be separated by whitespace (spaces, tabs, or newlines). |
-fvisibility=default |
The compiler sets visibility of symbols to default. |
This option specifies the default visibility for global symbols (syntax -fvisibility=keyword) or the visibility for symbols in a file (syntax -fvisibility-keyword=file).
Visibility specified by -fvisibility-keyword=file overrides visibility specified by -fvisibility=keyword for symbols specified in a file.
Option |
Description |
---|---|
-fvisibility=default |
Sets visibility of symbols to default. This means other components can reference the symbol, and the symbol definition can be overridden (preempted) by a definition of the same name in another component. |
-fvisibility=extern |
Sets visibility of symbols to extern. This means the symbol is treated as though it is defined in another component. It also means that the symbol can be overridden by a definition of the same name in another component. |
-fvisibility=hidden |
Sets visibility of symbols to hidden. This means that other components cannot directly reference the symbol. However, its address may be passed to other components indirectly. |
-fvisibility=internal |
Sets visibility of symbols to internal. This means the symbol cannot be referenced outside its defining component, either directly or indirectly. |
-fvisibility=protected |
CELL_TEXT |
If an -fvisibility option is specified more than once on the command line, the last specification takes precedence over any others.
If a symbol appears in more than one visibility file, the setting with the least visibility takes precedence.
The following shows the precedence of the visibility settings (from greatest to least visibility):
extern
default
protected
hidden
internal
Note that extern visibility only applies to functions. If a variable symbol is specified as extern, it is assumed to be default.
None
A file named prot.txt contains symbols a, b, c, d, and e. Consider the following:
-fvisibility-protected=prot.txt
This option sets protected visibility for all the symbols in the file. It has the same effect as specifying fvisibility=protected in the declaration for each of the symbols.