programming program oriented how concepts c++ c oop

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);