2015-03-26 6 views

Antwort

11

Es ist ein Präprozessor-Makro. Und ist definiert als:

#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 
#define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) 
#else 
#define _GLIBCXX_VISIBILITY(V) 
#endif 

Also, wenn _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY wahr ist, dann in Ihrem Fall wird es erweitern:

__attribute__ ((__visibility__ ("default"))) 

else if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY falsch ist es nichts zu tun.

Das Attribut __visibility__ wird zum Definieren der Sichtbarkeit der Symbole in einer DSO-Datei verwendet. Mit "hidden" anstelle von "default" können Symbole von Dingen außerhalb des DSO versteckt werden.

Zum Beispiel:

__attribute__ ((__visibility__("default"))) void foo(); 
__attribute__ ((__visibility__("hidden"))) void bar(); 

Die Funktion foo() würde von außerhalb des DSO nutzbar sein, während bar() grundsätzlich vertraulich und dürfen nur innerhalb des DSO verwendet werden.

Sie können ein bisschen mehr über das __visibility__ Attribut lesen Sie hier: https://gcc.gnu.org/wiki/Visibility

+0

Dank !. Das beantwortet meine Frage – user3875690

Verwandte Themen