program - oop c++
C/C++ Desplazamiento de la estructura (3)
¿Qué tal la macro estándar offsetof () (en stddef.h)?
Editar: para las personas que quizás no tengan la macro offsetof () disponible por alguna razón, puede obtener el efecto usando algo como:
#define OFFSETOF(type, field) ((unsigned long) &(((type *) 0)->field))
Estoy buscando un fragmento de código que pueda decirme el desplazamiento de un campo dentro de una estructura sin asignar una instancia de la estructura.
IE: dado
struct mstct {
int myfield;
int myfield2;
};
Podría escribir:
mstct thing;
printf("offset %lu/n", (unsigned long)(&thing.myfield2 - &thing));
Y obtenga "offset 4" para la salida. ¿Cómo puedo hacerlo sin esa declaración de "cosa mstct" / asignación de una?
Sé que & <struct> no siempre apunta al primer byte del primer campo de la estructura, puedo explicar eso más tarde.
A la derecha, use la macro offsetof
, que (al menos con GNU CC) está disponible para los códigos C y C ++:
offsetof(struct mstct, myfield2)
printf ("desplazamiento:% d / n", & ((mstct *) 0) -> myfield2);