Linker, Loader und ausführbare Formate

Welche Wirkung hat es, in C eine Funktion mit static zu definieren (z. B. static int helper(void))?

  1. ADie Funktion bleibt während der Programmausführung nicht im Speicher
  2. BDie Funktion ist nur innerhalb der Datei sichtbar und kollidiert nicht mit gleichnamigen Funktionen in anderen Dateien
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Was bedeutet die Angabe „extern int count;“ in C?
  2. Welche Aussage zum unter Linux u. a. üblichen ELF-Format ist richtig?
  3. Was steht in der Section .text einer ausführbaren Datei?
  4. In welcher Section wird eine außerhalb von Funktionen geschriebene globale Variable „int limit = 100;“ in C im Allgemeinen abgelegt?
  5. Welche Aussage zu den Merkmalen der Section .bss ist richtig?

Vergleiche zu diesem Thema