私はvxWorksアプリケーションをLinuxに変換しています。私はstruct
のメンバーにアクセスしたとき、私は私のstruct
メンバーを構築するためにword's
レイアウトを使用することができるようにuint32_tのバイトオーダーを確定
以前、私はword
とstruct
でunion
を持っていました。
しかし、私はこれをどのように考え出したのでしょうか?それはvxWorksボックスで動作します。私のvxWorksインスタンスでは、レイアウトは次のとおりです。
typedef union Status
{
struct fields
{
uint32_t byteA : 1; // <31>
uint32_t blank : 23; // <30:8>
uint32_t bytesN : 8; // <7:0>
} fields;
uint32_t word;
}
vxWorksからLinuxに移植する際に、いくつかのエンディアンの問題が発生しました。だから、Linux上でuint32_t
のレイアウトを考え出すことは重要です。
このようなものではありませんか? 'uint32_t foobar = 0x00ff00ff; if(((char *)foobar)[0] == 0xff)/ *エンディアン1つ*/ else/* other */' – Alex
何が問題なのですか? – anatolyg
http://stackoverflow.com/questions/6359629/union-hack-for-endian-testing-and-byte-swappingについて質問していますか? – Gnawme