Ну, у меня простой вопрос, по крайней мере, я надеюсь, что он простой. Некоторое время я интересовался консолью win32. Наш учитель сказал нам, что консоль Windows предназначена только для DOS и эмуляции реального режима. Ну, я знаю, что это неправда, потому что DOS-приложения запускаются эмулятором, который использует только консоль для отображения вывода. Еще одна вещь, которую я узнал, это то, что консоль встроена в Windows начиная с NT. Что ж. Но что я не смог найти, так это то, как на самом деле консольные программы написаны для использования консоли. Я использую Visual C ++ для программирования (ну, для обучения). Итак, единственное, что мне нужно сделать для использования консоли, это выбрать консольный проект. Сначала я подумал, что Windows решает, запускать ли приложение в консоли или пытается запустить приложение в оконном режиме. Поэтому я создал программу win32 и попробовал printf (). Ну, я не мог скомпилировать это. Я знаю, что по определению printf () печатает текст или переменные в стандартный вывод. Я также обнаружил, что stdout является консольным интерфейсом для вывода. Но я не мог найти то, что на самом деле является stdout.
Итак, в основном я хочу спросить, в чем разница между консольным приложением и приложением win32. Я думал, что Windows запускает консоль, когда она получает команду из функций "console-family". Но, очевидно, это не так, поэтому должен быть какой-то код, который на самом деле командует окнами для создания интерфейса консоли.
И второй вопрос: когда консоль создается, как Windows распознает, какой консольный терминал используется для какого приложения? Я имею в виду, что на самом деле это стандартный вывод? Это область памяти или какая-то подпрограмма Windows? Благодарю.