что по WinAPI подставка для



Я начал изучать Win32 API в C.
Я видел, что основная функция-это что-то вроде



int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) { .. }


Но я знаю, что функция в C похожа на



[ReturnType] [FunctionName] (Args) { .. }


В этом случае тип возвращаемого значения-int, а имя функции-WinMain.
Так что же означает WINAPI и является ли это необходимым?



Спасибо . :)

546   3  

3 ответов:

Он определяет Соглашение о вызове, которое является способом размещения аргументов функций и управления ими в стеке.

Вы можете смешивать соглашения о вызовах, скажем, если вы вызываете какой-то внешний код, например API windows, пока все находятся на одной "странице" со своими ожиданиями.

Типичные вызовы c компилируются с использованием так называемого cdecl. В cdecl вызывающий объект очищает аргументы, помещенные в стек.

WINAPI, также известный как "стандартный вызов", означает, что вызываемая функция отвечает за очистку стека своих аргументов.

Компилятор MS префиксует вызов cdecl с_, в то время как WINAPI получает ведущий _ и получает @{BYTES-NEEDED} перед именем функции, когда он искажает имена функций. По ссылке выше:

call        _sumExample@8  ;WINAPI
call        _someExample   ;cdecl

Это "соглашение о вызове", определяемое как макрос с #define и разрешается в __stdcall.

Подробнее на MSDN :

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

Win-Windows

API-интерфейс прикладного программирования

Интерфейс Прикладного Программирования Windows

Comments

    Ничего не найдено.