extern int test();
int main()
{
return test();
}
Ich baue den Code von gcc -c -o test.o test.c
, und ich finde, es gibt keinen Namen Mangling, wenn ich nm test.o
ausführen. nm
Ausgänge test
aber nicht _test
.warum der Name mangling nicht passiert?
Meine Umgebung ist ubuntu 16.04
gcc 5.4.0
Während es nicht wirklich _name mangling_ ist, hängt das Hinzufügen eines Unterstrichs zu Funktionsnamen von der verwendeten Werkzeugkette ab. Bei der Entwicklung für C16x-Mikrocontroller habe ich Tools von Keil und Tasking verwendet. Einer fügte ein _ hinzu, während das andere nicht. Selbst für die gleiche CPU-Architektur. Daher müssen Sie die Dokumentation Ihrer Werkzeugkette oder die EABI-Beschreibung Ihrer CPU lesen, wie die Aufrufkonventionen für C-Funktionen sind. – Gerhardh