我将结构和联合定义如下:
struct MY_STRUCT
{
int a;
unsigned int x;
char c;
};
union MY_UNION
{
unsigned char myByte[sizeof(struct MY_STRUCT)];
struct MY_STRUCT myStruct;
};
如何动态查找
myStruct.x
数组中myByte[]
的位置(索引)? 最佳答案
由于myStrunct
和myByte
的初始字节具有相同的地址,因此可以使用offsetof
运算符来实现:
size_t offset = offsetof(MY_STRUCT, x);
MY_UNION u;
unsigned char *ptr = &u.myByte[offset];
注意,这不是动态完成的:
offsetof
是在编译时静态计算的。