Cプログラミング言語について...
C/C++ Structure offsetの質問の一部には、「& は常に構造体の最初のフィールドの最初のバイトを指しているとは限らない」と記載されています。
しかし、 http: //www.lysator.liu.se/c/rat/c5.htmlの「ANSI Rationale」を見ると、セクション 3.5.2.1 構造体と共用体の指定子で「最初に穴が発生することはありません」と記載されています。したがって、「根拠」が決定的なものかどうかはわかりませんが、非常に目に見える質問のその部分と矛盾しているようです.
それで、それはどれですか? C構造体の最初のフィールドは常にoffsetof 0であることが保証されていますか?
struct A
{
int x;
};
struct B
{
struct A myA;
int y;
};
B myB;
移植可能な方法と同じであることが保証&myB
さ&(myB.myA)
れていますか?
(より具体的には、Libev の libev ユーザーデータ トリック、How to pass arguments to related callbacksおよび他の多くの場所では、構造体の最初のフィールドが offsetof 0 にあると想定しています...それは本当に移植可能ですか?)