О подписи: int WINAPI WinMain (HINSTANCE p1, HINSTANCE p2, LPSTR p3, int p4) - PullRequest
1 голос
/ 02 мая 2010

Почему WinMain может иметь два типа возврата?

Если я удалю его, сообщу об этом предупреждении:

warning C4007: 'WinMain' : must be '__stdcall'

Или я неправильно читаю int WINAPI? 1008 *

UPDATE

Я пробовал эти два варианта, которые, как говорят, совпадают с WINAPI, ни один из них не работает:

int __declspec WinMain

int __declspec(stdcall) WinMain 

Ответы [ 2 ]

6 голосов
/ 02 мая 2010

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

Грамматически, WINAPI примерно (но не совсем) эквивалентен спецификатору класса хранения, например static.

2 голосов
/ 02 мая 2010

WINAPI - это не второе возвращаемое значение, а #define для __stdcall.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...