• ベストアンサー

C言語のコンパイラについて教えてください。

C言語の勉強をしてるのですが、コンパイルすると普通にミスは認められず表示されたので、実行してみて入力とかしてみたら、途中で画面に「問題が発生しました。ご不憫をおかけします。この問題をマイクロソフト社に送信してください。ってでちゃって、組んだプログラムのテストみたいなのを出来ないことが多々あるのです。これはいったいどのような事がおこってるのでしょう?Bolrand社のC++って書いてあるコンパイラを使用してます。コンパイルされたからってミスはなかったなんてことはないということでしょうか?? お返事よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • YamaYoshi
  • ベストアンサー率29% (91/313)
回答No.1

コンパイルエラーと実行エラーは違いますよ。 たとえば、 int *m = NULL; *m = 10; これだと、コンパイルは通りますが、実行時にエラーになります。 (アドレスの参考先がNULLなのに中身に物を入れようとしているから。) 簡単に言うと、実際に動かしてみないと、アプリにも分からないバグもありえるということですね。 VC++みたいな、デバッグ機能のあるもので、ステップ実行ができれば簡単に洗い出しができたりします。

yuki22
質問者

お礼

そうでしたか。 初心者なので、もしかしたらコンパイラが壊れてるの?? っておもっちゃったのです。 安心しました。 ありがとうございました。

その他の回答 (4)

  • K-1
  • ベストアンサー率21% (832/3844)
回答No.5

コンパイルが出来たということは、C言語表記としてエラーが無かっただけで、ソフトウェアの動作が保障されるわけではありません。 文章を書いた。 誤字脱字も無い。送り仮名や単語の使い方も問題ない。 でも書かれている内容に間違いがある。 そういうことです。

yuki22
質問者

お礼

まだよく理解してないってことなのですね。 また解らないことがありましたらよろしくです。 ありがとうございました。

回答No.4

どこでエラーが起きてるか分からないのなら、手当たり次第にprintfを入れてその場所を特定するおいうことも……大変面倒ですが(ーー; #2の方も仰っていますが、  コンパイルされた = ミスはなかった ではありません。

yuki22
質問者

お礼

そういう方法もあるのですね、面倒ですか^^; お返事ありがとうです。

  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.3

実行時エラーですね。 Cygwinをinstallして、gcc, g++でコンパイル、gdbでデバッグすることをお勧めします。

yuki22
質問者

お礼

ごめんなさい、初心者なのでちょっと英語のところがどのような意味なのかわからないです^^; でも、お返事ありがとうございました。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

C言語はもともとプロが使うために作られた言語です。 しかもOSを書くため、オブジェクトができるだけ小さくなるようにしています。 このため普通の言語と違って実行時のエラーチェックが殆んどして有りません。 ですから、初心者はデバッグモードでコンパイルするか、 あるいはインタープリターを使ってデバッグしないと大変です。 コンパイルエラーをつぶすのは第1段階、実行エラーをつぶすのが第2段階、 これはどの言語でも常識です。

yuki22
質問者

お礼

うう、常識でしたか、ごめんなさい。 ご指導ありがとうございました。

関連するQ&A