5

GCC は、ファイル拡張子 (.c、.cc)、コマンド ライン パラメーター (-x)、または適切なコンパイラを直接呼び出す (gcc ではなく g++ など) に基づいて、コンパイラを自動的に切り替えます。

ファイル内のプラグマを使用してこれらをオーバーライドする方法はありますか?

コメント後に更新:

現在 50/50 C および C++ であるコード ベースを、C++ コンパイラで完全にコンパイルされるように変換しています。これは、現在の「C」モジュールが、変更できない (そしてラップしたくない) 新しい C++ ベースを呼び出せるようにするためです。C++ リンケージが追加されたとしても、実際には C であるファイルの拡張子を .c のままにしたいと思います。それらを「.c」のままにしておくことは、それらがそのままである理由を示していると思います(私はここで将来の世代を考えています! ;-))が、変更された各Cファイル名に対応するようにビルドシステムを変更することも大きな仕事です. さらに悪いことに、C ファイルの小さなサブセットは正常に C++ に変換されないため、C++ ベースを呼び出さない限り、C のままにしておきたいと思います。のプロジェクトは大きすぎます。

4

2 に答える 2

1

いいえ。

-x noneオプションのドキュメントには次のように記載されています。

後続のファイルがファイル名のサフィックスに従って処理されるように、言語の指定をオフにします (-x がまったく使用されていない場合と同様)。

したがって、それ以上のメカニズムについては言及されていないため、それらは存在しないと結論付けています.

また、あなたのアイデアには論理的な問題が含まれていることに注意してください。#pragmaこれは一部の言語の機能であるため、使用されている言語を指定するためにそれを使用することは非常に鶏と卵です。

于 2013-11-01T14:41:02.187 に答える