2

C++ の学習を始めたばかりで、 http: //www.dev-hq.net/c++/1-the-basics の C++ チュートリアルを読んでいるときに、テキスト エディターで C++ プログラムを作成することは、ビジュアルでプログラムを作成することとは異なることがわかりました。 c++. 「Visual C++は、実行後に消えるウィンドウを生成するため、ほとんどの場合、「main」関数の終了前にある種のアプリケーションを一時停止する必要があります」のようなものでした。これは何を意味するのでしょうか?

4

4 に答える 4

5

簡単な回答:必須ではありません。このサイトは、プログラムが終了する前にコンソール ウィンドウの出力を確認できるようにすることを提案しています (それによってウィンドウを閉じます)。

長い回答: IDEを使用してGUI を使用せずに C++ または C プログラムを開発している場合、コンソール/ターミナル ウィンドウ (コマンド プロンプトとも呼ばれます) を起動すると、IDE によって出力が表示されます。このウィンドウは、プログラムが開始されると表示され、プログラムが終了するとすぐに閉じられます。「Hello, world!」と出力する場合は、一時停止しないでください。ターミナル ウィンドウが開き、Hello, world!と表示されます。すぐに閉じて、瞬く間にすべて。そのため、最後にポーズを挿入するのが通例です。この問題は、すべての IDE で見られるわけではありません。独自の統合ウィンドウに出力を表示するものもあれば、スクリプトを介して一時停止動作を挿入するものもあります。

これは、ウィンドウを保持するための単なるハックであり、そのためのブロッキング呼び出しを行うことは、プログラムの観点からは役に立たないことを理解しておいてください。また、移植性がなく、Windows プラットフォームでのみ動作するという事実を除けば、問題があるため使用しないでください。system("pause");

#include <iostream>
#include <limits>

int main()
{
    std::cout << "Press ENTER(s) to exit...";
    // flush data in cin's buffer
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    // blocking call to fresh input from user
    std::cin.get();
}
  • これは移植可能な方法です。つまり、使用しているプラ​​ットフォームに関係なく機能します。

  • 別の方法は、ISO C 標準で義務付けられているようにポータブルであるgetchar(同様の名前の ではない)を使用することですが、癖がありますgetch

  • 別の方法は、Raja が提案したようにブレークポイントを設定することです。また、プログラミングに不可欠なツールであるデバッガーの学習にも役立ちます。

  • この問題を完全に回避するには、コンソール ウィンドウから自分でプログラムを実行します。初心者にとっては少し面倒かもしれませんが、手作業でコードをコンパイルし、IDE を使用せずに自分で実行すると、より多くの洞察が得られ、良い学習体験になります。

プログラムに偽の一時停止/ブロック呼び出しを挿入する代わりに、手動コンパイルまたはデバッグ ブレークポイント メソッドを引き続きお勧めします。ユーザーから受け取った入力は単に無視され、その後のプログラムで使用されることはないため、プログラムの観点からは冗長であることに注意してください。したがって、使用しないことをお勧めします。

于 2013-10-18T06:13:49.097 に答える
-1

これは、実行が完了するとすぐに実行可能ウィンドウが閉じることを意味します。

の前に、標準ライブラリ (またはヘッダー)の簡単なgetchar();ステートメントを使用することをお勧めします。つまり、ウィンドウを閉じるにはキーを押す必要があります。あなたが言及したように、Visual C++ は、Windows システムに戻る前にも機能します。<iostream><stdio.h>return 0;system("pause");

もちろん、メインから以前に戻った場合 (エラー コード、未処理の例外、またはどこかの終了呼び出しでよくあること) は、その一時停止メカニズムに到達しない可能性があります。あなたはまだ始めたばかりなので、今のところそのようなことに出くわす可能性は低いです.

コマンドラインからプログラムを実行しても、出力が表示されます。

于 2013-10-18T06:23:29.157 に答える