Если вы пытаетесь упростить задачу пользователям вашей библиотеки (или что-то еще), вы можете просто сгенерировать как WinMain
, так и main
из вашего макроса. По умолчанию компоновщик устанавливает консольные приложения для запуска в main
, а приложения win32 - с WinMain
. Другая «основная» функция будет проигнорирована.
(Предположительно, остальная часть кода не использует ни один из аргументов основной функции (argc
, argv
, hInstance
и т. Д.), , если это необходимо для работы с ними.)
Можно использовать определение _CONSOLE
, но оно не появляется автоматически; вам нужно добавить его вручную в свойства проекта. С другой стороны, выбор символа запуска является автоматическим. Таким образом, просто предоставление обеих функций и возможность выбора компоновщика могут сделать жизнь проще, потому что разработчику проекта не нужно ничего устанавливать и действительно может переключиться с Windows на консольное приложение (возможно, даже на конфигурацию), не делая этого что-нибудь.