_ und __
-
johny_legend schrieb:
_ steht für Betriebssystemabhängigkeit,
__ für Compiler- und BetriebssystemabhängigkeitWas mir schon bei mehreren embedded- Compilern untergekommen ist, daß aus (Inline-) ASM- Sicht die Funktionsnamen auf Label mit führendem Unterstrich abgebildet werden, also so
void MyFunction(void) { // do something } // ... asm(" jsr.w _MyFunction ; MyFunction ausführen");
Das tiefere Schema dahinter ist mir zwar nicht 100%ig klar,
nehme aber an, daß so die Sichtbarkeit der Namensräume auf Assemblerebenen gehandelt wird. Beim Disassemblieren sind mir auch schon Library- Funktionen aufgefallen, die mit "__" bzw. drei Underscores daherkommen.
Würde für johny_legends Erklärung sprechen ...
-
^^mit dem _ (und anderen 'decorations') werden zusätzliche informationen für den linker angehängt. z.b. macht der msvc aus einer funktion 'hello()' mit der calling convention 'cdecl' ein '_hello'. hat sie die calling convention 'stdcall', dann macht er daraus '_hello@0'. das hat nix mit underscores zu tun, die im c-quelltext auftauchen. eine 'cdecl _hello()' würde z.b. zu '__hello' (also mit 2 _, den davorgebastelten vom compiler und den vom funktionsnamen).