2011-08-15 12 views
1

私はMS Visual Studioに書かれたコードを移植しています。移植C++のLinuxへのMSのVisual Studioからコードおよび型付き列挙型を扱う

列挙SystemStatus:列挙型のMSのVisual Studioのユーザは、このようなタイプを指定することを可能にするBYTE {OK = 0、NeedsAttentionは、失敗しました}。

BYTEはunsigned char型

ある

リファレンスhttp://msdn.microsoft.com/en-us/library/2dzy4k6e.aspx

私がしようとするとRedHatの5.6が付属していますG ++バージョン4.1.2を使用してコードをコンパイルするときにエラーが発生します。明らかに、新しいC++標準C++ 0xは、厳密に型指定された列挙型をサポートしています:http://en.wikipedia.org/wiki/C%2B%2B0x#Strongly_typed_enumerations

この問題を解決してコードを移植する簡単な方法はありますか?可能であれば、WindowsとLinuxの両方でコードをコンパイルしたいと考えています。このプロジェクトの列挙数は膨大です!ありがとう。

+0

あなたは、このような古いコンパイラを使用する必要がありますか? GCC 4.6.1はこれをC++ 0xモードで受け付けます。ソースからコンパイラを構築することも非常に簡単です。 –

+0

構文は列挙型の場合は非常に簡単なので、ソースコードファイルをパターン検索で処理して置き換えることができます。 – QuentinUK

+0

GCC 4.4に付属しているRHEL 6(またはCentOS 6)に移行できますか? –

答えて

1

使用している++グラムのバージョンは、このような拡張された列挙型などのC++ 11個の機能をサポートしていません。ソースから最新のg ++​​をコンパイルするだけで、gccの依存関係をダウンロードしてビルドします。helper scriptがあります。

+0

最近、C++ ABIとの互換性はどうですか? 4.6でコンパイルされたC++コードと4.1でコンパイルされたシステムライブラリをリンクできますか?もちろん、彼が使用するすべてのサポートライブラリがCであれば、それは問題ではありません。 – Torp

+0

4.6は、3.4以降のバージョンと互換性があります。 http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.htmlは更新されていませんが、4.6が含まれています。 –

+0

私はCentOS6にアップグレードして、g ++コンパイラフラグに "-std = C++ 0x"を含めた後、この問題を解決しました。助けてくれてありがとう。 –

関連する問題