Windows控制台

好吧,我有一个简单的问题,至少我希望它很简单.我对win32控制台感兴趣了一段时间.我们的老师告诉我们,
Windows控制台仅用于DOS和实模式仿真.嗯,我知道这不是真的,因为DOS应用程序是由模拟器运行的,它只使用控制台来显示输出.我学到的另一件事是,自NT以来,控制台内置于Windows中.好.但我找不到的是,实际上是如何编写控制台程序来使用控制台.我使用Visual C进行编程(好吧,用于学习).所以,我需要做的唯一事情就是选择控制台项目.我首先想到的是,Windows决定在控制台中运行应用程序或尝试在窗口模式下运行应用程序.所以我创建了win32程序并尝试了printf().好吧,我无法编译它.我知道根据定义printf()将文本或变量打印到stdout.我还发现stdout是输出的控制台界面.但是,我找不到真正的stdout.

所以,基本上我想问的是,控制台应用程序和win32应用程序之间的区别在哪里.我认为windows从“console-family”函数获取命令时会启动控制台.但显然它没有,所以必须有一些代码实际上命令窗口来创建控制台界面.

第二个问题是,当控制台创建时,Windows如何识别哪个控制台终端用于哪个应用程序?我的意思是,什么是stdout?它是内存中的一个区域,还是一些被调用的Windows例程?谢谢.

最佳答案 链接Win32应用程序时,您可以选择是Windows还是控制台.在控制台的情况下,将自动分配控制台窗口(或者,如果父进程有一个,则重用).

但是,Windows(即GUI)应用程序也可以显示控制台窗口,只需调用AllocConsole API即可.

您测试应用程序可能由于多种原因而无法编译,错误消息应告诉您是否需要:

>包括“stdio.h”
>参考CRT(C运行时)库
>别的.

通常,如果您在Win32项目的新项目向导中选择控制台应用程序,这些事情应该可以正常工作,否则您需要选择正确的编译和链接选项.

点赞