2010-02-27 34 views
38

¿Podría explicarme la palabra WINAPI en la función WinMain()?¿Qué significa "WINAPI" en la función principal?

En la forma más sencilla ..

#include <windows.h> 

int -->WINAPI<-- WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
    LPSTR lpCmdLine, int nCmdShow) 
{ 
    MessageBox(NULL, "Goodbye, cruel world!", "Note", MB_OK); 
    return 0; 
} 

¿Es sólo un poco de modo cobarde de Windows?

¿Qué hace? O mejor dicho, ¿qué es esta característica de C++ que aún no he encontrado?

Respuesta

43

WINAPI es una macro que evalúa a __stdcall, una palabra clave específica de Microsoft que especifica una convención de llamadas donde el destinatario limpia la pila. La persona que llama y el destinatario de la función necesitan acordar una convención de llamadas para evitar corromper la pila.

+2

¿por qué es en este lugar específico? ¿No podrían dar la macro una línea arriba? – Pyjong

+3

La palabra clave de la convención de llamada va entre el tipo de devolución y el nombre de la función porque así es como alguien que trabaja en un compilador de C lo definió hace muchos años. No sé el razonamiento detrás de la sintaxis, o incluso qué compilador fue el primero en admitir las convenciones de llamada específicas (cdecl, pascal, fortran, etc.). Microsoft? Borland? ¿Enrejado? ¿Algo más? – bk1e

5

Ésta es una definición de macro se pretende que denote la convención de llamada de Windows. De MSDN:

La forma en que el nombre está decorado depende en el lenguaje y la forma en que el compilador es instruido para realizar la función disponibles, es decir, el convención de llamada. La convención de llamadas estándar entre procesos para Windows utilizada por DLL se conoce como la convención WinAPI . Se define en Windows archivos de encabezado como WINAPI, que está en a su vez definido mediante el __stdcall de Win32 .

2

Es específico de Windows. Especifica la convención de llamadas. WinMain recibe una llamada de Windows, y esto garantiza que la persona que llama y quien llama acuerden la convención de llamadas.

Cuestiones relacionadas