Что означает «WINAPI» в основной функции? - PullRequest
47 голосов
/ 27 февраля 2010

Не могли бы вы объяснить мне слово WINAPI в функции WinMain()?

Проще всего ..

#include <windows.h>

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

Это просто какой-то режим Windows в стиле фанк?

Что это делает? Или, скорее, что это за функция C ++, с которой я еще не сталкивался?

Ответы [ 4 ]

52 голосов
/ 27 февраля 2010

WINAPI - это макрос, который оценивается как __stdcall, специфичное для Microsoft ключевое слово, которое определяет соглашение о вызовах, когда вызываемый абонент очищает стек. Вызывающий и вызывающий функции должны согласовать соглашение о вызовах, чтобы не повредить стек.

7 голосов
/ 27 февраля 2010

Это определение макроса, предназначенное для обозначения соглашения о вызовах Windows.От MSDN :

Способ оформления имени зависит от языка и от того, как компилятору дано указание сделать функцию доступной, то есть к соглашению о вызовах.Стандартное соглашение о вызовах между процессами для Windows, используемое DLL, известно как соглашение WinAPI.В заголовочных файлах Windows он определяется как WINAPI, который, в свою очередь, определяется с помощью объявления Win32 __stdcall.

7 голосов
/ 27 февраля 2010

WINAPI - это макрос, который расширяется до __stdcall , что означает, что вызываемый объект очищает стек.

2 голосов
/ 27 февраля 2010

Это зависит от Windows. Он определяет соглашение о вызовах. WinMain вызывается из Windows, и это гарантирует, что вызывающий и вызываемый стороны согласовывают соглашение о вызовах.

...