Cosa significa "winapi" nella funzione principale?
Domanda
Potresti per favore spiegarmi il WINAPI
parola nel WinMain()
funzione?
Nel modo più semplice ..
#include <windows.h>
int -->WINAPI<-- WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, "Goodbye, cruel world!", "Note", MB_OK);
return 0;
}
È solo una modalità funky di Windows?
Che cosa fa? O meglio qual è questa funzione C ++ che non ho ancora incontrato?
Soluzione
WINAPI
è una macro che valuta __stdcall
, una parola chiave specifica di Microsoft che specifica una convenzione di chiamata in cui il Callee pulisce lo stack. Il chiamante della funzione e Callee devono concordare una convenzione di chiamata per evitare di corrompere lo stack.
Altri suggerimenti
Questa è una definizione macro intesa a indicare la convenzione di chiamata di Windows. Da Msdn:
Il modo in cui il nome è decorato dipende dalla lingua e dal modo in cui il compilatore viene chiesto di rendere disponibile la funzione, ovvero la convenzione chiamante. La convenzione di chiamata interagrega standard per Windows utilizzata da DLLS è nota come Convenzione WINAPI. È definito nei file di intestazione di Windows come winapi, che a sua volta è definito utilizzando il dichiaratore di Win32 __stdcall.
Winapi è una macro che si espande a __stdcall Ciò significa che il Callee pulisce lo stack.
È specifico per Windows. Specifica la convenzione chiamante. Winmain viene chiamato da Windows e questo garantisce che il chiamante e Callee siano d'accordo sulla convention di chiamata.