关于C编程语言...
C/C++ Structure offset的部分问题指出“& 并不总是指向结构的第一个字段的第一个字节”
但是查看http://www.lysator.liu.se/c/rat/c5.html上的“ANSI 基本原理”,它在第 3.5.2.1 节结构和联合说明符中声明“开始时不会出现漏洞”。所以我不确定“基本原理”是否是确定的,但它似乎与那个高度可见的问题的那一部分相矛盾。
那么,它是什么? C 结构的第一个字段是否总是保证偏移量为 0?
struct A
{
int x;
};
struct B
{
struct A myA;
int y;
};
B myB;
&myB
保证和&(myB.myA)
便携方式一样吗?
(更具体地说,Libev 的 libev 用户数据技巧,如何将参数传递给相关回调和许多其他地方确实假设结构中的第一个字段位于 offsetof 0 处……这真的是可移植的吗?)