- ベストアンサー
C言語のコンパイラについて教えてください。
C言語の勉強をしてるのですが、コンパイルすると普通にミスは認められず表示されたので、実行してみて入力とかしてみたら、途中で画面に「問題が発生しました。ご不憫をおかけします。この問題をマイクロソフト社に送信してください。ってでちゃって、組んだプログラムのテストみたいなのを出来ないことが多々あるのです。これはいったいどのような事がおこってるのでしょう?Bolrand社のC++って書いてあるコンパイラを使用してます。コンパイルされたからってミスはなかったなんてことはないということでしょうか?? お返事よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
コンパイルエラーと実行エラーは違いますよ。 たとえば、 int *m = NULL; *m = 10; これだと、コンパイルは通りますが、実行時にエラーになります。 (アドレスの参考先がNULLなのに中身に物を入れようとしているから。) 簡単に言うと、実際に動かしてみないと、アプリにも分からないバグもありえるということですね。 VC++みたいな、デバッグ機能のあるもので、ステップ実行ができれば簡単に洗い出しができたりします。
その他の回答 (4)
- K-1
- ベストアンサー率21% (832/3844)
コンパイルが出来たということは、C言語表記としてエラーが無かっただけで、ソフトウェアの動作が保障されるわけではありません。 文章を書いた。 誤字脱字も無い。送り仮名や単語の使い方も問題ない。 でも書かれている内容に間違いがある。 そういうことです。
お礼
まだよく理解してないってことなのですね。 また解らないことがありましたらよろしくです。 ありがとうございました。
- Trick--x--
- ベストアンサー率26% (19/72)
どこでエラーが起きてるか分からないのなら、手当たり次第にprintfを入れてその場所を特定するおいうことも……大変面倒ですが(ーー; #2の方も仰っていますが、 コンパイルされた = ミスはなかった ではありません。
お礼
そういう方法もあるのですね、面倒ですか^^; お返事ありがとうです。
- mac_res
- ベストアンサー率36% (568/1571)
実行時エラーですね。 Cygwinをinstallして、gcc, g++でコンパイル、gdbでデバッグすることをお勧めします。
お礼
ごめんなさい、初心者なのでちょっと英語のところがどのような意味なのかわからないです^^; でも、お返事ありがとうございました。
- ymmasayan
- ベストアンサー率30% (2593/8599)
C言語はもともとプロが使うために作られた言語です。 しかもOSを書くため、オブジェクトができるだけ小さくなるようにしています。 このため普通の言語と違って実行時のエラーチェックが殆んどして有りません。 ですから、初心者はデバッグモードでコンパイルするか、 あるいはインタープリターを使ってデバッグしないと大変です。 コンパイルエラーをつぶすのは第1段階、実行エラーをつぶすのが第2段階、 これはどの言語でも常識です。
お礼
うう、常識でしたか、ごめんなさい。 ご指導ありがとうございました。
お礼
そうでしたか。 初心者なので、もしかしたらコンパイラが壊れてるの?? っておもっちゃったのです。 安心しました。 ありがとうございました。