【问题标题】:Visual C++ output exits so fast [duplicate]Visual C++ 输出退出如此之快[重复]
【发布时间】:2012-09-01 08:21:18
【问题描述】:

可能重复:
Visual Studio terminates my console application too fast

我是 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。所以请帮忙!!!

【问题讨论】:

    标签: c++ visual-studio-2010 visual-studio visual-c++ visual-c++-2010


    【解决方案1】:

    编辑:你显然不应该将cin 放入一个真正的程序中,除非你真的想读入输入。

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

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

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

    string buffer;
    cin >> buffer;
    

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

    【讨论】:

    • 您通常不应该这样做,因为它会使您的程序的行为与控制台应用程序的标准不同,并且在这里没有必要。也就是说,是的,它会起作用。
    • @hvd:是的;但由于他只是在学习,而且下一个合乎逻辑的步骤是 cin 和用户输入,在这种情况下,它会起作用。
    【解决方案2】:

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

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

    【讨论】:

    • 这并不完全正确:例如,在断言时,将显示一个对话框,要求附加调试器,因此您仍然有机会查看 VS 中发生的情况
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      system(“pause”);
      

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

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

      char a = getchar();
      

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

      【讨论】:

      • 我认为是system("pause")(带有小写的s)。
      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          猜你喜欢
          • 2016-05-05
          • 2015-12-02
          • 1970-01-01
          • 2019-05-06
          • 1970-01-01
          • 1970-01-01
          • 2018-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多