相关疑难解决方法(0)

联合和结构包装问题

我正在编写一些软件,其中每个位必须精确(它是CPU的),所以__packed非常重要.

typedef union{
uint32_t raw;
struct{
    unsigned int present:1;
    unsigned int rw:1;
    unsigned int user:1;
    unsigned int dirty:1;
    unsigned int free:7;
    unsigned int frame:20;
} __packed;
}__packed page_union_t;
Run Code Online (Sandbox Code Playgroud)

那是我的结构和结合.但它不起作用:

page_union_t p; //.....
//This:
p.frame=trg_page;
p.user=user;
p.rw=rw;
p.present=present;
//and this:
p.raw=trg_page<<12 | user<<2 | rw<<1 | present;
Run Code Online (Sandbox Code Playgroud)

应该创建相同的uint32.但他们并没有创造同样的东西.

有什么我看不出我的工会有问题吗?

c struct packing unions

6
推荐指数
2
解决办法
7418
查看次数

标签 统计

c ×1

packing ×1

struct ×1

unions ×1