1

可能重复:
Visual Studio 终止我的控制台应用程序太快

我是 Visual Studio C++ 的 100% 新手。我也是 C++ 的新手,到目前为止,我一直使用 netbeans 和 cygwin。今天我安装了visual C++ 2012并运行了以下简单代码

// HelloWorld.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>

using namespace std;


int main()
{
    cout << "Hello World" << endl;
}

控制台窗口来了,它来得太快了,我也没有机会看到输出,提到以下内容。

'HelloWorld.exe': Loaded 'C:\Users\yohan\Documents\Visual Studio 2010\Projects\HelloWorld\Debug\HelloWorld.exe', Symbols loaded.
'HelloWorld.exe': Loaded 'C:\Windows\System32\ntdll.dll', Cannot find or open the PDB file
'HelloWorld.exe': Loaded 'C:\Windows\System32\kernel32.dll', Cannot find or open the PDB file
'HelloWorld.exe': Loaded 'C:\Windows\System32\KernelBase.dll', Cannot find or open the PDB file
'HelloWorld.exe': Loaded 'C:\Windows\System32\msvcp100d.dll', Symbols loaded.
'HelloWorld.exe': Loaded 'C:\Windows\System32\msvcr100d.dll', Symbols loaded.
The program '[3436] HelloWorld.exe: Native' has exited with code 0 (0x0).

我浏览了互联网,有些人建议将项目属性 > 配置属性 > 链接器 > 调试选项卡 > 生成调试信息设置为“是”。这已经设置为是,但仍然没有好处。我也计划在这个 IDE 中使用 opencv。所以请帮忙!!!

4

6 回答 6

4

cin编辑:除非您真的想读入输入,否则您显然不应该将 a放入真正的程序中。

发生的事情是您的程序正在打印“Hello World”,正如您告诉它的那样,然后完成。

VS 作为一个 MS 程序,它只会为你的程序创建一个终端,直到它完成,然后它会关闭终端。

为了查看输出,您可以将其放在 cout 之后:

string buffer;
cin >> buffer;

这将在终止程序之前等待您按 Enter。

于 2012-09-01T08:25:16.437 回答
4

如果您从 IDE 单独运行程序(通过 Ctrl+F5 而不是 F5),它不会在最后关闭控制台窗口,而是会打印“Press any key to continue...”(无需修改源代码反正)。

这种方法的缺点是所有断言和失败都会导致程序崩溃,而不是被 Visual Studio 捕获。

于 2012-09-01T09:17:06.920 回答
2

这是在没有打开控制台的情况下调用的控制台应用程序的正常行为。例如,转到您的 system32 文件夹并双击attrib.exe.

查看输出的最简单方法是在程序的最后一行设置断点。

于 2012-09-01T08:25:33.080 回答
0

它被归类为“黑客”,但对于像您这样的简单应用程序,您可以使用以下行:

system(“pause”);

它是特定于平台的并且速度很慢,但似乎您在 Windows 上。

断点也是暂停执行的好方法。一旦 Main 执行,您的应用程序就完成了,这就是您所见证的。在 Main 的最后一个花括号上放置一个断点。

char a = getchar();

将暂停并等待您输入一个字符。

于 2012-09-01T08:30:49.637 回答
0

如果您制作控制台应用程序,这是合乎逻辑的 - 尝试从控制台运行您的程序。

于 2012-09-01T08:55:38.413 回答
0

您可以在 main 的末尾放置一个断点,或者 call getchar(),或者 system("pause")通过控制台执行您的程序

设置断点时,请确保您处于调试模式

于 2012-09-01T09:01:25.423 回答