пишут такие типы как HANDLE WINAPI или int WINAPI и другие, а что добавление WINAPI меняет? И сам по себе WINAPI что за тип ?
2 Answers
Это макрос, определённый в одном из заголовочных файлов
Что именно он делает в текущей конфигурации - нужно посмотреть в макросе (а макрос может по-разному развернуться в зависимости от других определений)
Обычно определяет соглашение о вызове __stdcall
- 53,555
Символ WINAPI никакого отношения к типу не имеет. В Windows API этот макрос используется с функциями и определяет соглашение о вызове (calling convention). Поскольку WinAPI использует паскалевское соглашение о вызове, то этот символ определяется как __stdcall.
Поскольку вероятность внезапного изменения соглашения о вызове в WinAPI чуть ниже абсолютного нуля, то этот символ можно было бы вообще не определять, а писать сразу __stdcall. Но во-первых, это красиво смысл в этом макросе все-таки есть. Наличие символа WINAPI в объявлении функции сразу указывает что это именно функция WinAPI - в отличие, к примеру, от функций обратного вызова, у которых вместо WINAPI стоит CALLBACK, и который тоже транслируется в __stdcall. Благодаря этим макросам сразу видно назначение функции.
- 4,895