Существует ли макрос препроцессора, который позволяет мне узнать, является ли приложение консольным или другим?

Я собираюсь написать мне немного print( ) функция.
Однако в указанной функции мне придется определить, имею ли я дело с консольным приложением, независимым от операционной системы.

(Главным образом для решения, использовать ли std::cout или пойти с ОС, связанной MessageBox реализация. )

Если не существует автоматически сгенерированной константы, будет ли другой подходящий способ, который совместим с несколькими платформами?

Я включу его в библиотеку, что означает, что я не могу сказать, какой компилятор будет использоваться или какая IDE.

-1

Решение

Не существует независимого от платформы метода для определения того, использует ли ваше приложение графический интерфейс или консоль.

Это было бы чрезвычайно сложно на платформах UNIX, где есть много различных библиотек графического интерфейса, не говоря уже о Wayland против X11.

1

Другие решения

На окнах можно комбинировать GetConsoleWindow() вместе с рядом других вызовов API, чтобы узнать, является ли приложение консольного типа или GUI. Как в этом посте: Как проверить, запускается ли программа из консоли?

Также см Проверьте, есть ли в stdin вход для C ++ (windows и / или linux) ,

1