2011-01-17 27 views

答えて

3

言語(または一般的なシステムライブラリ)内でこの問題の一般的な解決策はありません。

(読んだ/書いたコードを自動作成できるスクリプトやツールがあります。ライブラリに一種の「リフレクション」を追加できますが、参照はありません)

この質問に対する答えになるはずのボーナス情報:エンディアンに加えて、コンパイラ指令を使用して、メモリ内の構造体のパッキングをバイトアライメント(ネットワークパケットの場合は通常)にするのではなく、構造体フィールドの自然な整列。

+0

私は一緒に暮らすことができると思いますコードautogenツール、ありがとう。 – SimpleButPerfect

1

バイナリストリームが必要な場合は、エンディアンを含む関連する問題に対処する必要があります。代替案を提示するために、フィールドの人間可読/ ASCII表現を作成することができます。これは落とし穴の多くを回避する傾向がありますが、しばしばより冗長でパフォーマンスの低いものです。いずれにせよ、構造体/フィールドがたくさんあるときに関数を作成するのはちょっと難しいことです。 GCC-XML、Open-C++(C言語コードが合法なC++プログラムであれば)などのメタデータを使用しても、サポートスクリプトを使ってコード生成を検討することができます。

関連する問題