CPUエンディアンとは無関係にCスタイルの構造体をシリアライズするには?ネットワークを介した安全なC構造体のシリアル化? - C++
私は解決策を探しましたが、構造体の各フィールドのバイト順序を変更するのではなく、問題のより一般的な解決策を望んでいました。
CPUエンディアンとは無関係にCスタイルの構造体をシリアライズするには?ネットワークを介した安全なC構造体のシリアル化? - C++
私は解決策を探しましたが、構造体の各フィールドのバイト順序を変更するのではなく、問題のより一般的な解決策を望んでいました。
言語(または一般的なシステムライブラリ)内でこの問題の一般的な解決策はありません。
(読んだ/書いたコードを自動作成できるスクリプトやツールがあります。ライブラリに一種の「リフレクション」を追加できますが、参照はありません)
この質問に対する答えになるはずのボーナス情報:エンディアンに加えて、コンパイラ指令を使用して、メモリ内の構造体のパッキングをバイトアライメント(ネットワークパケットの場合は通常)にするのではなく、構造体フィールドの自然な整列。
バイナリストリームが必要な場合は、エンディアンを含む関連する問題に対処する必要があります。代替案を提示するために、フィールドの人間可読/ ASCII表現を作成することができます。これは落とし穴の多くを回避する傾向がありますが、しばしばより冗長でパフォーマンスの低いものです。いずれにせよ、構造体/フィールドがたくさんあるときに関数を作成するのはちょっと難しいことです。 GCC-XML、Open-C++(C言語コードが合法なC++プログラムであれば)などのメタデータを使用しても、サポートスクリプトを使ってコード生成を検討することができます。
私は一緒に暮らすことができると思いますコードautogenツール、ありがとう。 – SimpleButPerfect