8

Visual Studio 2010を使用してコンパイルしている開発者から、GCC、LLVM、Visual Studioの他のバージョンなど、さまざまなコンパイラで再コンパイルする必要がある開発者からC++ソースコードを受け取ります。 VS2010で警告のないコンパイル)が他のコンパイラでコンパイルに失敗します。ポータブルC++の記述を確実にするためにVisual Studio 2010にコンパイラ設定がありますか?

VS2010で設定できるコンパイラの設定はありますか?彼のコードがきれいに移植される可能性が高くなりますか?

+3

http://stackoverflow.com/questions/5060034/vs2010-c-and-c-enforce-ansi-compliance-for-linux-gcc-compatibility –

+2

これは1つのアプローチです。もう1つは、VSに加えてg ++を使ってすべてをコンパイルすることです。 – NPE

+0

@rogerありがとう、それは私が探していたものとほぼ同じです。 – Rich

答えて

3

言語レベルでは、弾丸はありません。あなたができることは、できるだけ言語標準に固執することです。ほとんどのコンパイラには、特定のコンパイラ固有の拡張機能(Visual C++の場合、/Zaは非標準言語拡張機能を無効にする)を利用すると、警告またはエラーを発行するオプションがあります。しかしこれは完璧ではありません。なぜならコンパイラはまだ完全に標準の100%を実装していないので、厳密に準拠したコードでも移植性の問題が残ることがあります。

また、多くの日常的なコードは実際には拡張機能や未定義またはコンパイラ定義のビヘイビアを利用しており、しばしばそれを実現することはないので、完全に標準に準拠したモードでコンパイルすることは現実的ではないかもしれません。

また、規格が異なることができることに注意する必要があります。例えば、intのような型は、異なるシステム上で異なる大きさであってもよい。 WindowsはLLP64で、ほとんどのUNIX由来のOSはLP64です。

システムレベルでは、プログラマーがシステム固有のもの(たとえば、<windows.h>または<pthreads.h>)に依存していないかどうかを確認する完全な方法がわかりません。

すべての開発者がすべてのターゲットプラットフォームでテストビルドを簡単に実行できるようにすることをお勧めします。

関連する問題