Linker, loader en uitvoerbare formaten
Wat is het belangrijkste doel van name mangling in C++, waarbij de compiler symboolnamen maakt door informatie zoals argumenttypen aan de functienaam toe te voegen?
- ADe functienamen onleesbaar maken zodat het programma niet kan worden gestolen
- BDe functienamen korten om het uitvoerbare bestand kleiner te maken
- CDe linker in staat stellen functies met dezelfde naam maar verschillende argumenttypen (overloading) en namespaces te onderscheiden
Antwoord en toelichting tonen
Antwoord: C. De linker in staat stellen functies met dezelfde naam maar verschillende argumenttypen (overloading) en namespaces te onderscheiden
De linker vergelijkt symbolen alleen op de tekenreeks van de naam. In C++ kunnen functies met dezelfde naam bestaan, zoals „print(int)” en „print(double)”, en die zouden zo niet te onderscheiden zijn. Daarom verwerkt de compiler argumenttypen en dergelijke in de naam, zoals „_Z5printi”. C-functies worden niet gemangled, dus bij het aanroepen van een C-functie vanuit C++ wordt „extern "C"” gebruikt om het mangelen te stoppen.
Verder: nog 9 vragen over Linker, loader en uitvoerbare formaten