Linker, loader en uitvoerbare formaten
Wat is het juiste effect als in C een functie met static wordt gedefinieerd (bijvoorbeeld static int helper(void))?
- ADe functie blijft tijdens de uitvoering van het programma niet in het geheugen
- BDe functie is alleen vanuit het bestand zelf zichtbaar en botst niet met een functie met dezelfde naam in een ander bestand
- 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.
Verder: nog 9 vragen over Linker, loader en uitvoerbare formaten