这可能有点奇怪,但这是我遇到的问题。
我有这样的结构:
typedef struct smallStruct{
unsigned int First10 : 10;
unsigned int Next10 : 10;
unsigned int Third10 : 10;
unsigned int extra : 1;
} small
我需要能够传入一个int并设置它以使它适合First10的10位,然后是Next10的另一个int,等等。之所以如此,是因为我需要能够在4字节变量中存储4条不同的信息,这是我能想到的最有效的方法。
我需要为此进行一点移位吗?
答案 0 :(得分:2)
您可以简单地指定值;位域逻辑负责必要的修改:
small make_small(int a, int b, int c) {
small result = { a, b, c, 0 };
return result;
}
void update_first(int value, small * s) {
s->First10 = value;
}
// etc.