2012-06-03 6 views
7

したがって、offsetof(struct, field)は、プレーン構造内のフィールドの相対オフセットを返します。しかし、ネストされた構造の内部のフィールドの相対的なオフセットを取得する方法があります。入れ子構造内の相対オフセットの検索

struct my_struct { 
    int a; 
    struct { 
     int b; 
     int c; 
    } anonymous_struct; 
} 

(実行時に)my_structからbc相対オフセットを取得する方法はあります。

答えて

12

はい、まだoffsetofを使用できます。

など。 offsetof

size_t boff = offsetof(struct my_struct, anonymous_struct.b); 

要件は、タイプ部材-指示staticタイプt;)アドレス定数に評価&(t.部材-指示所与のようなものでなければならないということです。 メンバー指定子は、単純な識別子である必要はありません。

+0

これは、私が試していない唯一の組み合わせです。 10倍 – skyel