• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ctime_r宣言が無いのに何故かコンパイルが通る)

ctime_r宣言が無いのに何故かコンパイルが通る

このQ&Aのポイント
  • MinGW 5.1.3 (Full Install)を使用して、ctime_rが宣言されていないにも関わらずコンパイルが通る現象が起きました。
  • ソースコードの実行エラーが発生するはずですが、コンパイルは成功します。
  • インクルードパスにctime_rが含まれていないにもかかわらず、なぜコンパイルが通るのか理由を知りたいです。

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

  • ベストアンサー
  • mikaemi
  • ベストアンサー率50% (33/65)
回答No.2

gcc なら、-Wall とか -Wimplicit とか -Wimplicit-function-declaration などのオプションをつけておけば、宣言のない関数の呼び出しは、ワーニングメッセージを出力しますが、エラーするオプションがあるかどうかは知りません^^;

hekkusyoi
質問者

お礼

ありがとうございます。 関数を使う前に「宣言・もしくは定義」されていないと使えないものだと思い込んでいました。 「宣言されていない場合は勝手に整数型の関数として解釈される」という挙動は初耳でした。 http://www.wakhok.ac.jp/~kanayama/C/01/node87.html 普段 -Wall をつける癖がついていなかったで、これを機につけるよう心がけようと思います。

その他の回答 (1)

  • mikaemi
  • ベストアンサー率50% (33/65)
回答No.1

C言語だとコンパイルはできるんじゃないですか? 使用している関数の事前の宣言がなくても。もちろん、リンクエラーにはなりますけど。 C++ならコンパイルエラーになりますが。。。

関連するQ&A