Linker, loader en uitvoerbare formaten

Wat is het juiste effect als in C een functie met static wordt gedefinieerd (bijvoorbeeld static int helper(void))?

  1. ADe functie blijft tijdens de uitvoering van het programma niet in het geheugen
  2. BDe functie is alleen vanuit het bestand zelf zichtbaar en botst niet met een functie met dezelfde naam in een ander bestand
  3. CDe functie wordt vóór alle andere functies uitgevoerd
Antwoord en toelichting tonen

Antwoord: B. De functie is alleen vanuit het bestand zelf zichtbaar en botst niet met een functie met dezelfde naam in een ander bestand

Bij static op een functie of globale variabele ontstaat interne linkage: het symbool wordt alleen binnen dat bestand gebruikt en kan niet door andere bestanden worden gerefereerd. Naast het voorkomen van naamconflicten weet de compiler dat de functie niet van elders wordt aangeroepen, zodat optimalisaties zoals inline-expansie en het verwijderen van ongebruikte functies gemakkelijker zijn.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Wat is de juiste betekenis van „extern int count;” in C?
  2. Welke uitspraak over het ELF-formaat, dat veel op Linux wordt gebruikt, is juist?
  3. Wat staat er in de .text-sectie van een uitvoerbaar bestand?
  4. In welke sectie wordt in het algemeen de globale variabele „int limit = 100;” geplaatst, buiten een functie in C geschreven?
  5. Welke eigenschap van de .bss-sectie is juist?

Vergelijkingen bij dit onderwerp