Linker, Loader und ausführbare Formate
Welche Wirkung hat es, in C eine Funktion mit static zu definieren (z. B. static int helper(void))?
- ADie Funktion bleibt während der Programmausführung nicht im Speicher
- BDie Funktion ist nur innerhalb der Datei sichtbar und kollidiert nicht mit gleichnamigen Funktionen in anderen Dateien
- CDie Funktion wird vor allen anderen Funktionen ausgeführt
Antwort und Erläuterung anzeigen
Antwort: B. Die Funktion ist nur innerhalb der Datei sichtbar und kollidiert nicht mit gleichnamigen Funktionen in anderen Dateien
Wird static bei einer Funktion oder globalen Variablen angegeben, entsteht interne Bindung (internal linkage): Das Symbol wird nur innerhalb der Datei verwendet und kann von anderen Dateien nicht referenziert werden. Neben der Vermeidung von Namenskollisionen weiß der Compiler, dass die Funktion nicht von anderswo aufgerufen wird, und kann dadurch leichter Optimierungen wie Inlining und das Entfernen ungenutzter Funktionen vornehmen.