4

のVisual Studio内コンパイルするとき、私は最終的にLinuxのは、それが正常に2010

上で実行されますC++ applicationを作成するためにVisual Studio 2010を使用したいのLinuxへのC++ソースコードの移植性があり、私は認識しておく必要があり、互換性/バージョンの問題はありますの? WindowsLinuxで使用するコンパイラはどれですか?

+0

#includeのLinuxに相当するものはありませんですので、linux用にビルドする場合は、関連するすべての標準ヘッダーを必ず含めてください。それ以外にansi C++は大丈夫です。 – Muggen

答えて

6

標準 C++を使用し、プラットフォーム固有の拡張機能を使用しない限り、コンパイラは重要ではありません。システム固有の機能(ネットワーク、ファイルシステムなど)が必要な場合は、boostなどの抽象化レイヤーを使用してみてください。

3

標準C++を使用してください。 __int64やプラットフォーム固有の外部ライブラリなどのコンパイラ依存機能を使用しないでください。

+0

+1。 __int64ではなく#を#includeすることができます。 – Muggen

+0

@Muggen:IIRC stdint.hは、VC++でサポートされていません。使用可能なドロップイン置換がいくつかあります。 –

+0

@マッテオ:それは最新のVC++になっています。 C++ 0xに向かってドライブの一部。 –

4

残念ながら、認識する必要のある問題はたくさんあります。他の人が指摘しているように、最も重要なのは、あなたがターゲットとしているすべてのプラットフォームに移植可能なライブラリと標準のC++だけを使用することです。しかし、他にもあなたを噛ませることがたくさんあります。さまざまな行末(Windowsは\ r \ n、Unixは一般的に\ nを使用します)、さまざまなデータ型のサイズなどがあります。より一般的には、ポータブルなものを保つために、エンディアン、バイト秩序、異なるファイルシステムの仕組みなど

本質的に、最も重要なのは、対象とするすべてのシステムに精通していることです。 を1つのシステムに書き込み、別のシステムで痛みのない状態でコンパイルできることを期待してください。代わりに、関連するすべてのシステムで1日目からコンパイルし、常にすべてのシステムで作業を続けるようにしてください。私はCMake(http://www.cmake.org)のようなクロスプラットフォームのビルドシステムを検討することをお勧めします。それはあなたに私の経験の痛みの世界を保存します。あなたが助けることができるなら、あなたはいつでも複数のプラットフォームのためにmakefileを保持しておく必要はありません。

関連する問題