当一种语言被处理以显示其输出时,特别是对于编译语言,它们的代码由编译器编译,由汇编器汇编并由链接器链接以创建可执行文件。
由于链接器通常是生成可执行文件的链接器,因此我认为它是执行控制台窗口图形布局的链接器,这是 exe 用于显示输出的内容,但是当我阅读有关链接器的更多信息时,它从未提到创建在链接之后或之前的某个时刻的控制台窗口,所以这让我想知道,哪一个使可执行二进制文件的控制台窗口的图形布局?
控制台窗口内置于 Windows 的系统服务之一中 - 这就是所有程序都具有相同控制台的原因。在 Vista 之前,它位于
csrss.exe
。从 Vista 开始,它被移至conhost.exe
。当需要控制台时,这些程序会由 Windows 自动启动。
Windows 将在以下情况下创建控制台:
最后一个确实是由链接器控制的。如果您使用 Microsoft Linker (
link.exe
),则可以使用 /SUBSYSTEM
命令行参数: 选择子系统
/SUBSYSTEM:CONSOLE
链接您的程序将自动创建一个控制台。/SUBSYSTEM:WINDOWS
链接将不会创建控制台(但您的程序稍后仍可以使用AllocConsole
创建它)/SUBSYSTEM
选项进行链接 - 链接器将自动决定。如果您的程序有一个名为 main
或 wmain
的函数 - 它会将其设置为 CONSOLE
。如果您有 WinMain
或 wWinMain
- 它将设置 WINDOWS
。