Linker, loader en uitvoerbare formaten

Welke omschrijving van de symboolresolutie die de linker uitvoert, is juist?

  1. ADe naam van een functie of variabele die in het ene bestand wordt gebruikt, wordt gekoppeld aan de definitie ervan in een ander bestand
  2. BVariabelennamen in de broncode worden vervangen door korte namen, waardoor ze moeilijk leesbaar worden
  3. CUitdrukkingen met wiskundige symbolen worden opnieuw tot getallen uitgerekend
Antwoord en toelichting tonen

Antwoord: A. De naam van een functie of variabele die in het ene bestand wordt gebruikt, wordt gekoppeld aan de definitie ervan in een ander bestand

Als main.c de functie sum aanroept en sum.c de inhoud ervan definieert, bevat main.o de informatie „verwijst naar sum” en sum.o „definieert sum”. De linker verzamelt de symbooltabellen van alle objectbestanden en zoekt voor elke verwijzing één bijbehorende definitie. Als geen definitie wordt gevonden, volgt de fout „undefined reference”, en bij twee of meer definities „multiple definition”.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Welke omschrijving van de relocatie die de linker uitvoert, is juist?
  2. Bij het linken van een C-programma verschijnt de fout „undefined reference to `foo'”. Wat is de meest waarschijnlijke oorzaak?
  3. In zowel a.c als b.c is een globale functie void init(void) met dezelfde naam gedefinieerd zonder static, en de bestanden worden gelinkt. Wat gebeurt er?
  4. Wat is het juiste effect als in C een functie met static wordt gedefinieerd (bijvoorbeeld static int helper(void))?
  5. Wat is de juiste betekenis van „extern int count;” in C?

Vergelijkingen bij dit onderwerp