Ich weiß, dass die Verwendung des Schlüsselwortes static
in C auf einer Funktion die Funktion auf die Kompilierungseinheit beschränkt, in der sie definiert ist. Ich untersuche nun die Symbolsichtbarkeit und bin etwas verwirrt über den Unterschied zwischen static
Funktionen und Funktionen, die mit __attribute__((visibility("hidden")))
markiert sind, oder über die Befehlszeilenoption -fvisibility=hidden
.Was ist der praktische Unterschied zwischen einer statischen Funktion und einer Funktion mit dem "versteckten" Sichtbarkeitsattribut?
Ich habe das Gefühl, dass die Art und Weise, wie diese Dinge unter der Haube ändern, nicht das Gleiche ist, aber ich weiß nicht, was der Unterschied ist und was es bedeutet, wenn man mit ihnen im eigentlichen Code arbeitet. Was ändert sich zwischen den beiden und wann möchtest du eins über dem anderen benutzen?
aber nicht von außerhalb der DLL +1 –