我开始在Visual c++和我想知道如何保持控制台窗口。

例如,这将是一个典型的“hello world”应用程序:

int _tmain(int argc, _TCHAR* argv[])
{
    cout << "Hello World";
    return 0;
}

我漏了哪一行?


当前回答

实际上,真正的解决方案是项目模板本身的选择。 你必须在旧的VS中选择Win32控制台应用程序,或者先填写项目名称,然后双击Windows桌面向导,然后选择Win32控制台应用程序。然后在此时选择空项目。然后,这允许原始提问者真正想要的东西,而无需添加额外的停止点和保持代码。 我也遇到过这个问题。答案也在MSDN网站上。

其他回答

对于makefile项目,被接受的解决方案失败了,原因是Visual Studio中的一个bug(这个bug至少在2012版之前都存在-我还没有测试2013版)。这里详细介绍了这个错误。

为了在makefile项目的程序终止后让控制台暂停,执行以下步骤(这可能与2010 - 2012以外的版本有所不同):

1)将/子系统:CONSOLE传递给链接器。-编辑:见下文。

2)在文本编辑器中打开项目文件(.vcxproj)。

3)在根<project>标签内,插入以下内容:

< ItemDefinitionGroup > <链接> < SubSystem >控制台< / SubSystem > < /链接> < / ItemDefinitionGroup >

4)重新加载解决方案中的项目。

5)不调试运行程序(CTRL + F5)。

编辑:

根据我下面的评论,设置链接器选项/子系统:CONSOLE实际上与makefile项目无关(如果你使用的是MSVC以外的编译器,甚至不一定可能)。重要的是将设置添加到.vcxproj文件中,就像上面的第3步一样。

sin .get()或system("PAUSE")。 我没听说过你可以用return(0);

只需要在main的最后一个花括号上加一个断点。

    int main () {
       //...your code...
       return 0;
    } //<- breakpoint here

它适合我,不需要调试就可以运行。它还会在到达断点之前执行析构函数,这样您就可以检查在这些析构函数上打印的消息(如果有的话)。

我也有同样的问题;在我的应用程序中有多个exit()点,没有办法知道它到底在哪里退出,然后我发现了这一点:

atexit(system("pause"));

or

atexit(cin.get());

这样,无论我们退出程序的哪个位置,它都会停止。

实际上,真正的解决方案是项目模板本身的选择。 你必须在旧的VS中选择Win32控制台应用程序,或者先填写项目名称,然后双击Windows桌面向导,然后选择Win32控制台应用程序。然后在此时选择空项目。然后,这允许原始提问者真正想要的东西,而无需添加额外的停止点和保持代码。 我也遇到过这个问题。答案也在MSDN网站上。