Nach meinem Verständnis wird Name Mangling verwendet, wenn eine Funktion überladen wird, so dass die Funktionen mit dem gleichen Namen unterschieden werden können.Warum wird Name Mangling mit der Funktion WinMain() verwendet?
Aber ich habe festgestellt, dass Name Mangling auch mit der WinMain()
Funktion verwendet wird (die nicht überlastet ist). Nach dem Namen Mangling wird es [email protected]
.
Warum wird Name Mangling mit der WinMain()
Funktion verwendet?
Dies ist der Code, den ich verwendet:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
return 0;
}
enthalten Wenn der Compiler tatsächlich * das 'WinMain' Symbol * beschädigte, würde es etwas völlig verschieden von, was Sie sehen. Was Sie sehen, ist der Compiler mit * special treatment * des 'WinMain'-Symbols. –
Ich glaube '_WinMain @ 16' ist ein interner Name, der vom mingw/gcc-Compiler verwendet wird. Was die 16 bedeuten soll, habe ich keine Ahnung. – Lundin
@Lundin das '@' bedeutet 'stdcall' Aufrufkonvention, die' 16' ist die Größe der Parameterliste (hier: 4 mal ein 4 Byte Argument). Funktionen, die andere Aufrufkonventionen verwenden, sind anders gestaltet. –