2012-06-03 17 views
7

offsetof(struct, field), offsetof(struct, field), düz bir yapının içindeki göreceli ofseti döndürür. Ama yuvalanmış bir yapının içindeki bir alanın göreceli ofsetini elde etmenin bir yolu var.Yuvalanmış yapıda göreceli sapmayı bulma

örn.

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

b ofset ve (zamanında) my_struct için c göreli almak için herhangi bir yolu var mı.

cevap

12

Evet, hala offsetof'u kullanabilirsiniz.

E.g. offsetof arasında

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

şartlar tip ve üye dezignatörstatictipt;,) bir adres sabit değerlendirir &(t.üye dezignatör verilen şekilde olmalıdır vardır. üye tanımlayıcısı'un basit bir tanımlayıcı olması gerekmez.

+0

Denemediğim tek kombinasyon buydu. 10x – skyel