Linker, Loader und ausführbare Formate

Was bedeutet die Angabe „extern int count;“ in C?

  1. ASie deklariert, dass die Variable count an anderer Stelle definiert ist, und reserviert hier keinen Speicher
  2. BSie legt die Variable count neu an und initialisiert sie mit 0
  3. CSie macht die Variable count außerhalb dieser Datei unsichtbar
Antwort und Erläuterung anzeigen

Antwort: A. Sie deklariert, dass die Variable count an anderer Stelle definiert ist, und reserviert hier keinen Speicher

extern ist eine Deklaration „die Variable dieses Namens ist in einer anderen Datei o. Ä. definiert“ und reserviert keinen Speicherplatz. Der Compiler erzeugt Befehle, die count referenzieren, ohne dessen Adresse zu kennen, und vermerkt die Stelle in den Relokationsinformationen. Der Linker verbindet sie mit einer Definition wie „int count = 0;“ in einer anderen Datei und legt die Adresse fest. Grundsätzlich steht die extern-Deklaration in einer Header-Datei und die Definition in genau einer Quelldatei.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Welche Aussage zum unter Linux u. a. üblichen ELF-Format ist richtig?
  2. Was steht in der Section .text einer ausführbaren Datei?
  3. In welcher Section wird eine außerhalb von Funktionen geschriebene globale Variable „int limit = 100;“ in C im Allgemeinen abgelegt?
  4. Welche Aussage zu den Merkmalen der Section .bss ist richtig?
  5. Die Ausführung von „char *p = "hello"; p[0] = 'H';“ in C führt in vielen Umgebungen zu einem abnormalen Abbruch. Welcher Grund ist richtig?

Vergleiche zu diesem Thema