Macro de biblioteca C - offsetof ()
Descripción
La macro de la biblioteca C offsetof(type, member-designator) da como resultado un entero constante de tipo size_tque es el desplazamiento en bytes de un miembro de estructura desde el principio de la estructura. El miembro se da por miembro-designador y el nombre de la estructura se da en tipo.
Declaración
A continuación se muestra la declaración de la macro offsetof ().
offsetof(type, member-designator)
Parámetros
type - Este es el tipo de clase en el que el designador de miembro es un designador de miembro válido.
member-designator - Este es el designador de miembro del tipo de clase.
Valor devuelto
Esta macro devuelve el valor de tipo size_t que es el valor de compensación del miembro en tipo.
Ejemplo
El siguiente ejemplo muestra el uso de la macro offsetof ().
#include <stddef.h>
#include <stdio.h>
struct address {
char name[50];
char street[50];
int phone;
};
int main () {
printf("name offset = %d byte in address structure.\n",
offsetof(struct address, name));
printf("street offset = %d byte in address structure.\n",
offsetof(struct address, street));
printf("phone offset = %d byte in address structure.\n",
offsetof(struct address, phone));
return(0);
}
Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:
name offset = 0 byte in address structure.
street offset = 50 byte in address structure.
phone offset = 100 byte in address structure.