2016-06-26 4 views
0

小さなC++コードを書いて、MSVS 2013でコンパイルしました。しかし、GCCを使ってUbuntuでコンパイルしようとしましたが、存在しないstd::absを使っているというエラーが出ました。その後、私はcmathを含めることで問題を解決しました。MSVCがヘッダーを単独で含むことを拒否する方法

なぜMSVSは文句を言わなかったのですか?それ自体にいくつかのヘッダーが含まれていますか。はいの場合、どのようにMSVSに必要なものを含めることを拒否して、この種の非クロスプラットフォームコードが消えるのでしょうか?

答えて

2

それは、プロジェクトの設定に応じて、問題はおそらく、直接には含まれていないことを行うことができますが、それはそれ自体で

をいくつかのヘッダーが含まれてい。 MSVC(とGCCも)はヘッダーBにヘッダーAを含めることができます。なぜなら、AにはB内部で必要な部分があるからです。はい、どのように私はそれが全体ヘッダーツリーを書き換えることなく

を望んでいるものは何でも含むからMSVSを拒否することができた場合は副作用として、もちろんあなたは...あまりにもヘッダBから

を他のシンボルを取得します、 できません。それだけではなく、コンパイラ固有の多くのことが、VSとGCCの両方でコンパイルする正当な理由です。 (、特に、VSが主なツールの場合)。

関連する問題