• ベストアンサー

#includeとexternとCコンパイラ

表題についてお伺いします。 (1)Cファイル内の関数をexternで渡す (2)#includeでCファイルごと定義してその関数を使う では、コンパイルは異なるでしょうか? 具体的には、 (1)はCファイルをCコンパイルする (2)はCファイルをC++コンパイルする になりますか? 前提条件:VS2013proのVC++でMFCアプリで作成するプロジェクト

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

  • ベストアンサー
回答No.1

>(1)Cファイル内の関数をexternで渡す externは「宣言文」であり「渡す」と言うのは意味不明です。 >(2)#includeでCファイルごと定義してその関数を使う #includeは「別ソースをその場所に取り込むだけ」であり「定義」云々とは無関係で、意味不明です。 >具体的には、 >(1)はCファイルをCコンパイルする >(2)はCファイルをC++コンパイルする >になりますか? なりません。 「C言語モードでコンパイルするか、C++言語モードでコンパイルするか?」は「コンパイラそのものの仕様」に左右されます。 例えば、VS2013proのVC++なら「ソースファイルの拡張子が.cならCコンパイラモードで、拡張子が.cppならC++コンパイラモードでコンパイルする」と言う仕様になっています。 また、コンパイラオプションに「/Tc」を指定すると拡張子を無視してCモードで、「/Tp」を指定すると拡張子を無視してC++モードでコンパイルする仕様になっています。 「質問そのものが意味不明」であり「Cコンパイラの仕組みを理解できていない」ですから、この質問そのものが成り立ちません。 質問そのものが成り立ちませんから、回答するのも不可能です。 「基礎から勉強し直してきて下さい」としか言えません(意味:顔を洗って出直して来い)

NEW2010
質問者

お礼

厳しいお言葉恐縮です! 勉強し直してきます。 「ソースファイルの拡張子が.cならCコンパイラモードで、拡張子が.cppならC++コンパイラモードでコンパイルする」 上記内容で十分に当方の問題は解決できました! どうもありがとうございます!

関連するQ&A

専門家に質問してみよう