Возможно, это простой или глупый вопрос, но я не могу найти ответа: можно ли проверить во время компиляции, вызывается ли GCC в Windows с параметром -mwindows или -mconsole? Я хотел бы направить вывод на стандартный вывод или в окно сообщения, в зависимости от этого параметра, например:
#ifdef CONSOLE_BUILD
printf ("Привет, на стандартный вывод");
#elifdef GUI_BUILD
MessageBoxW (NULL, L "Привет в графическом интерфейсе", NULL, MB_OK);
#endif
Обнаружение -mconsole и -mwindows при компиляции
Ответы (1)
-mconsole
и -mwindows
влияют только на компоновщик, но не на компилятор. Вы можете использовать файл спецификаций GCC для добавления -DCONSOLE_BUILD
всякий раз, когда указан -mconsole
, но по сути это будет пользовательская модификация GCC.
В качестве альтернативы, похоже, существуют различные способы выяснить, связано ли окно консоли с процессом, например _ 5_ функция (но я не программист Windows).
person
Florian Weimer
schedule
03.06.2018
Способ с GetConsoleWindow работает! И, конечно, направление вывода во время выполнения даже предпочтительнее, чем во время компиляции.
- person Martin Sander; 04.06.2018
@MartinSander, пожалуйста, примите ответ, если он отвечает на ваш вопрос.
- person orhtej2; 04.06.2018
__subsystem__
, стоит проверить. - person orhtej2   schedule 03.06.2018-mconsole
, результат__subsystem__
будет3
, а-mwindows
-2
. - person orhtej2   schedule 03.06.2018