關於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