0

私は、古代の Solaris (sparc) を対象としたアプリケーションを Linux に変換するプロジェクトに取り組んでいます。言語は C/C++ で、ほとんどのコードは電子技術者 (つまり、多くの組み込みデバイスの仕事をしている人々) によって書かれています。

そのため、ユニオンとビットフィールドはいたるところで使用されています。ビットフィールドや共用体を含まない構造体などを処理するのは非常に簡単ですが、ビットが MSB または LSB として解釈される規則やバイト順のため、コードを次のように変換するのはかなり面倒です。 x86 Linux。

この古いコードを 21 世紀に持ち込むためのクリーンな方法論を探しています。提案 (例、研究論文、ホワイトペーパー、本の提案など) は大歓迎です。

4

1 に答える 1

1

これらの構造体は、データをファイルとして保存したり、何らかのシリアル/ネットワーク リンクを介して送信したりするために使用されますか? データがマシンから別のマシンに移動する場合にのみ、エンディアンについて心配する必要があります。

メモリ内データ以外で使用される構造体でビットフィールドを使用することは、ひどく悪い習慣です。プログラム全体で構造をそのままにして、それらを読み書きする関数を変更する方がよいかもしれません。その時点で、バイト順の変換をきれいに行うことができます。

于 2011-09-05T23:48:42.367 に答える