1

重複の可能性:
Visual Studio によるコンソール アプリケーションの終了が速すぎる

私は Visual Studio C++ の初心者です。私もC++は初めてで、これまでcygwinでnetbeansを使用していました。今日、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).

インターネットを閲覧したところ、[プロジェクト プロパティ] > [構成プロパティ] > [リンカー] > [デバッグ] タブ > [デバッグ情報の生成] を「はい」に設定するよう提案された人もいました。これはすでに yes に設定されていますが、それでもうまくいきません。私もこの IDE で opencv を使用する予定です。だから助けてください!!!

4

6 に答える 6

4

cin編集:実際に入力を読みたい場合を除き、実際のプログラムに a を入れるべきではないことは明らかです。

何が起こっているかというと、あなたのプログラムは、あなたが指示したとおりに「Hello World」を出力してから終了しています。

MSプログラムであるVSは、プログラムが終了するまでプログラムの端末を作成するだけで、終了すると端末を閉じます。

出力を見るために、これを cout の後に置くことができます:

string buffer;
cin >> buffer;

これは、プログラムを終了する前にエンターを押すのを待ちます。

于 2012-09-01T08:25:16.437 に答える
4

プログラムを IDE とは別に (F5 ではなく Ctrl+F5 を使用して) 実行すると、最後にコンソール ウィンドウが閉じず、「続行するには任意のキーを押してください...」と出力されます (とりあえず)。

このアプローチの欠点は、すべてのアサーションと失敗が、Visual Studio によってキャッチされるのではなく、プログラムのクラッシュにつながることです。

于 2012-09-01T09:17:06.920 に答える
2

これは、コンソールを開いていない状態で呼び出されるコンソール アプリケーションの通常の動作です。たとえば、system32 フォルダーに移動し、 をダブルクリックしますattrib.exe

出力を確認する最も簡単な方法は、プログラムの最後の行にブレークポイントを設定することです。

于 2012-09-01T08:25:33.080 に答える
0

コンソールアプリケーションを作成する場合、それは論理的でした-コンソールからプログラムを実行してみてください。

于 2012-09-01T08:55:38.413 に答える
0

main の最後にブレークポイントを配置したり、 を呼び出しgetchar()たり、 system("pause")コンソールからプログラムを実行したりできます。

ブレークポイントを設定するときは、デバッグ モードであることを確認してください

于 2012-09-01T09:01:25.423 に答える
0

これは「ハック」として分類されますが、あなたのような単純なアプリの場合は、次の行を使用できます。

system(“pause”);

プラットフォーム固有で遅いですが、Windows を使用しているようです。

ブレークポイントは、実行を一時停止する良い方法でもあります。Main が実行されると、アプリケーションは完了です。それが目の当たりにしている状態です。Main の最後の中かっこにブレークポイントを設定します。

char a = getchar();

一時停止して、文字を入力するのを待ちます。

于 2012-09-01T08:30:49.637 に答える