我有一些代码用这种方式读取32位的块
struct data{
unsigned int value : 12;
unsigned int foo : 1;
unsigned int bar : 2;
/*...*/ // ^^ adds up to 32 bits
}
int* rawdata;
for (;;) {
data* d = (*data)rawdata;
unsigned int value = d->value;
rawdata++;
}
我或多或少知道它是如何运作的。 : 12
告诉编译器读取12位(然后将它们解释为unsigned int
)。然而,当我在网上寻找这个时,我找不到任何东西,因为我不知道要搜索什么("结构内存对齐"没有产生任何有用的结果)。因此我的问题是:
这项技术如何调用?我在哪里可以找到有关此功能的详细信息?