LoginSignup
1
0

More than 5 years have passed since last update.

コンソール実行時にすぐに画面が閉じるときの対処法(C++)

Last updated at Posted at 2018-04-17

動機

久々にC++を触る機会があり、デバッグの際に止まらずに終了してしまう、よくあるトラブルの対処法を忘れていたので、備忘録として記載しておきます。
追記:2018/04/18 14:19

環境

Visual Studio Community 2017

魔法の1行

以下の1行をストップしたい場所に入れ、stdio.hをインクルードするだけです。
(初歩的なプログラムの場合、returnの上に入れるのが普通です)

hoge.cpp
getchar()

このコマンドは本来一文字読み取る関数ですが、一度入力待ちになり、何かキーを押すと再度動くので、擬似的なブレークポイントとして機能します。

プログラム例

16進数で入力された数字を10進数で表示する簡単なコードです。

main.cpp
#include <stdio.h>

int main() {
    int variable;
    variable = 0x12345678;

    printf("%d", variable);

    getchar(); // 一時停止
    return 0;

}

上手くいけば、以下のように表示され、何かキーを押すと終了するようになると思います。

305419896

追記:もう一つの魔法の1行(?)

別解として、以下があります。(y_itamoto様コメントありがとうございます。)

hoge.cpp
system("pause");

これは1行で「続行するには…」を表示してくれる優秀ちゃんです。
ただ、正確には1行ではなく、

hoge.cpp
#include <stdlib.h>

を先頭に追加する必要があります。
蛇足ですが、僕も最初にこれを発見したのですがエラーを吐いてしまい(その時インクルード部分のスペリングミスとは気づかなかった)、先程紹介した方法に行き着くことになりました。
多分コメントで指摘されるまで気づくことなかったかも…

プログラム例 その2

main.cpp
#include <stdio.h>
#include <stdlib.h>

int main() {
    int variable;
    variable = 0x12345678;

    printf("%d\n", variable);

    system("pause"); //一時停止
    return 0;

}

上述したプログラムと同じ動作をするはずです。

最後に

このコマンドを書いた後に、「別にブレークポイントでよくね?」って思った

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0