2012-06-03 14 views
7

Por lo tanto, offsetof(struct, field) devuelve el desplazamiento relativo del campo dentro de una estructura simple. Pero, ¿hay alguna manera de obtener el desplazamiento relativo de un campo dentro de una estructura anidada?Encontrar el desplazamiento relativo en la estructura anidada

p. Ej.

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

¿Hay alguna manera de conseguir el desplazamiento de bc y en relación con my_struct (en tiempo de ejecución).

Respuesta

12

Sí, aún puede usar offsetof.

E.g.

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

Los requisitos de offsetof son que el tipo y miembro designador- debe ser tal que dado statictipot;, &(t.miembro designador-) evalúa a una constante de dirección. El member-designator no tiene que ser un identificador simple.

+0

Esa fue la única combinación que no pude probar. 10x – skyel

Cuestiones relacionadas