可能的重复:
这段C++代码是什么意思? https://stackoverflow.com/questions/1604968/what-does-this-c-code-mean
我正在尝试使用 JNA 将 C 结构映射到 Java。我遇到了一些我从未见过的东西。
The struct
定义如下:
struct op
{
unsigned op_type:9; //---> what does this mean?
unsigned op_opt:1;
unsigned op_latefree:1;
unsigned op_latefreed:1;
unsigned op_attached:1;
unsigned op_spare:3;
U8 op_flags;
U8 op_private;
};
您可以看到一些变量被定义为unsigned op_attached:1
我不确定这意味着什么。这会影响为该特定变量分配的字节数吗?
该构造指定每个字段的位长度。
这样做的好处是你可以控制sizeof(op)
,如果你小心的话。结构体的大小将是内部字段大小的总和。
在您的情况下,op 的大小是 32 位(即sizeof(op)
is 4).
对于每组无符号 xxx:yy,大小始终向上舍入为 8 的下一个倍数;构造。
这意味着:
struct A
{
unsigned a: 4; // 4 bits
unsigned b: 4; // +4 bits, same group, (4+4 is rounded to 8 bits)
unsigned char c; // +8 bits
};
// sizeof(A) = 2 (16 bits)
struct B
{
unsigned a: 4; // 4 bits
unsigned b: 1; // +1 bit, same group, (4+1 is rounded to 8 bits)
unsigned char c; // +8 bits
unsigned d: 7; // + 7 bits
};
// sizeof(B) = 3 (4+1 rounded to 8 + 8 + 7 = 23, rounded to 24)
我不确定我是否记得正确,但我想我是对的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)