我有以下类型的结构
typedef struct
{
unsigned int a : 8;
unsigned int b : 6;
unsigned int c : 2;
}x, *ptr;
我想做的是改变字段c的值。
我做类似以下的事情
x structure = { 0 };
x->c = 1;
当我查看内存映射时,我希望找到00 01,但我却找到了00 40。看起来在排列第二个字节时,它将c字段放在最低位,将b字段放在最高位。我在 GCC 和 Windows 编译器上都看到了这一点。
现在,我所做的是以下,它工作正常。
unsigned char ptr2 = (unsigned char*) ptr
*(ptr2 + 1) &= 0xFC
*(ptr2 + 1) |= 0x01
我看错了内存映射吗?感谢您的帮助。