MSDN.WhiteKnight - Stack Overflow answers
Ответ на "точка входа в win32 приложении"
Answer 868448
Выбор между main и другими (нестандартными) точками входа определяется параметрами компилятора. Например, в Visual C++:
При указании параметра
/SUBSYSTEM:CONSOLE
, точкой входа является реализованная компилятором функция mainCRTStartup, которая вызывает реализованную программистом функцию main/wmain.При указании параметра
/SUBSYSTEM:WINDOWS
, точкой входа является реализованная компилятором функция WinMainCRTStartup, которая вызывает реализованную программистом функцию WinMain/wWinMain.Если также указан параметр
/ENTRY
, вместо указанных выше точек входа будет использована явно указанная функция.Функции с префиксом "w" используются со строковыми параметрами типа WCHAR, а без него - с обычным char. Если указать параметры неправильно, будет ошибка компилятора (что-то вроде "Нельзя перегрузить WinMain"); однако выбор между main и wmain не обязательно должен соответствовать параметру Character set в свойствах проекта.
При выборе типа проекта "Win32 Project", начальное значение параметра SUBSYSTEM будет WINDOWS, поэтому используется WinMain. Однако можно поменять настройки, так чтобы использовалась main или вообще какая-то другая функция, и весь функционал WinAPI будет работать точно так же. Иными словами, WinMain - это просто традиционная точка входа для приложений WinAPI, но никакого правила, что "Приложение Win32 всегда должно использовать WinMain" не существует.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.