2011-09-17 4 views
0

は、それが安全なように書かれているiPhoneへのWindowsからバイナリファイルを渡すことです?そうでない場合は、標準ライブラリ(C++ 11を含む)または安全にブーストすることでこれをシリアル化する方法はありますか?それはコードの非移植片のように思えるので、これにもっとクリーンな方法はありますか?WindowsのiPhoneバイナリファイルに

答えて

1

いいえ、多くの理由からです。まず、char *readwriteに渡す必要があるため、これはコンパイルされません。第2に、構造体にパディングが含まれている可能性があるため、単一のプラットフォームでも動作することは保証されていません(同じプラットフォームであってもコードの異なるバージョン間で異なることがあります)。次に、多くのプリミティブタイプ(例えば、long doubleはx86では12バイト、x64では16バイト)に影響する64/32ビットの問題があります。最後に、エンジェイアンがあります(ただし、iOSエンディアンが何であるかはわかりません)。

だから、要するに、そうしないでください。

各structメンバーを別々に、そのデータ型に従ってシリアル化する必要があります。

Boost.serializationをチェックアウトしたいと思うかもしれませんが、経験はありません。

関連する問題