关于C语言编程...C结构的第一个字段总是保证在0的偏移量处?
在C/C++ Structure offset质询的规定,“&并不总是在结构的第一个字段的第一个字节点”
但看在“ANSI理由“在http://www.lysator.liu.se/c/rat/c5.html它声明”3.5.2.1结构和联合说明符在开始时不会出现孔“。所以我不确定这个“基本原理”是否是确定性的,但它确实与这个非常明显的问题的部分矛盾。
那么,这是什么? C结构的第一个字段总是保证在0的偏移量?
struct A
{
int x;
};
struct B
{
struct A myA;
int y;
};
B myB;
是&myB
保证是一样&(myB.myA)
在便携式的方式?
(更具体地说,在Libev, How to pass arguments to relevant callbacks和其他许多地方的libev用户数据伎俩并不认为在结构中的第一场是在offsetof 0 ...是真的便携式?)
我很确定它在C中是真的;在C++中,这对于标准布局类是正确的。 – 2013-05-10 12:57:41
我很*很确定这也是真的,我只是不知道相关的标准引用。可移植性是我的问题。这对我尝试过的所有东西都有效,但是这会在我还没有看到的平台上困扰我吗? – wilsonmichaelpatrick 2013-05-10 13:00:25
@KerrekSB:vtable位于哪里?在一开始的时候? (C++) – Alex 2013-05-10 13:00:53