C · Avançado · Português · Técnico
tipo opaco
Tipo declarado no cabeçalho sem mostrar seus campos, normalmente uma struct incompleta usada por ponteiro. Esconde a implementação e permite mudá-la sem recompilar quem usa.
Onde usar
Bibliotecas expõem FILE * ou sqlite3 * sem revelar o layout interno. Quem usa só manipula o ponteiro por funções de criar, usar e destruir.
Em código
// pilha.h
typedef struct pilha Pilha; // opaco
Pilha *pilha_nova(void);
void pilha_push(Pilha *p, int v);
void pilha_libera(Pilha *p);Exemplos
A API usa um tipo opaco para poder mudar a struct sem quebrar a ABI.
O cliente só enxerga um ponteiro para o tipo opaco.
Cuidado
Tentar declarar variáveis do tipo opaco ou usar sizeof nele: por ser incompleto, só ponteiros são possíveis fora do módulo.
Sinônimos
handle, ponteiro opaco