ExpertiDict

C · Avançado · Inglês · Técnico

offsetof

/ˈɔf.sɛt.ʌv/substantivo

Macro de stddef.h que devolve, em bytes, a posição de um membro dentro de uma struct, medida a partir do início dela. O resultado é do tipo size_t.

Onde usar

Aparece em serialização e em macros como container_of, que recuperam a struct a partir do endereço de um membro. Leva em conta o padding inserido pelo compilador.

Em código

#include <stddef.h>
struct s { char c; int i; };
size_t off = offsetof(struct s, i);
// off costuma ser 4 por causa do padding

Exemplos

Use offsetof instead of counting bytes by hand.

Use offsetof em vez de contar bytes à mão.

offsetof of the second field is 4 because of padding.

O offsetof do segundo campo é 4 por causa do padding.

Cuidado

Calcular o deslocamento à mão somando tamanhos de campos, porque o padding invalida a conta.

Origem

Do inglês offset of, deslocamento de.

Veja também

Todos os termos de C