読者です 読者をやめる 読者になる 読者になる

稲枝の押入れ

いなえが適当なことを書いては、しまっておく場所

VisualStudioでコンソールプログラムを実行後、コンソール画面を消さない方法

調べた感じVS2010からどうも「空のプロジェクト」を作るとデフォの状態だとプログラムの実行が終わると自動でウィンドウが消えてしまう様になっているらしい。

最近はGUIの開発が多かったので知らなかったのだけれど、ちょっと試したいことがあって久々にコンソールプログラムを作って実行してみたら一瞬でウィンドウが消えて結果が全く見えなかった。

というわけで、それをどう直したらいいかを調べるのがかれこれ3回目くらいなので、大した分量もないのだが大まかに3つの方法を備忘録的に書いておく。

system("pause");

まず、そもそも調べるのが面倒くさい時はsystem関数を使ってしまう。これは簡単に言うと文字列を受け取ってその文字列をコマンドプロンプトに打ち込んだのと同じような動きをしてくれる関数だ。

つまり、system("pause");と書くと、任意のキーを押すまで処理を中断するコマンドであるpauseコマンドが実行されるのだが、これをプログラムの最後においておけば、処理が中断されてプログラムが終わらないのでウィンドウが消えなくなる(勿論キーを押すと終わってしまう)。

また、この関数を使うにはC言語なら<stdlib.h>C++なら<cstdlib>をインクルードする必要があります。ただ、<iostream><random>等を辿っていくとその中でそれらがインクルードされていたりするので、ユーザーが自らインクルードする必要まではない場合もあります。

ブレークポイント

2つめにもっと面倒くさい時、と言うか特にコードを汚したくない時はVSの機能であるブレークポイントを使ってしまう。これをプログラムの終わりのあたりに設定しておき、デバッグありで実行すれば、おそらくブレークポイントのところにプログラムが達した段階でVSの方に戻ってきてプログラムが一度止まる。するとプログラムは「デバッグの停止」をするまで止まるので、それで出力が確認できる。

設定を変える

もしくはそもそも設定を変えることでこれを回避できる。少し長い間使うプロジェクトならこっちのほうが楽だ。これだとデバッグなし実行(Ctrl+F5)をした時に勝手にプログラムが終了するのを防げるようになる。

やり方は、 1. ソリューションエクスプーラーで設定したいプロジェクトを右クリックしてプロパティを開く 2. 左のボックスの中から、構成プロパティ/リンカ/システムを選ぶ 3. 右のボックスから一番上のサブシステムコンソール(/SUBSYSTEM:CONSOLE)を選択

以上と言った感じなんですが、何でデフォの設定変わったんですかね。