ExpertiDict

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

símbolo fraco

/ˈsĩ.bo.lu ˈfɾa.ku/substantivo

Símbolo que o linker aceita ver substituído por outra definição forte de mesmo nome. É extensão do gcc e do clang, com __attribute__((weak)), usada para implementações padrão sobrescrevíveis.

Onde usar

Aparece em firmware e bibliotecas: um handler de interrupção padrão é fraco, e o projeto o substitui definindo uma função com o mesmo nome. Não faz parte do C padrão.

Em código

/* lib.c: versão padrão */
__attribute__((weak)) void tick(void) {}

/* app.c: a definição forte vence */
void tick(void) { /* meu código */ }

Exemplos

O handler padrão é um símbolo fraco; é só definir o seu com o mesmo nome.

A definição forte do app vence a fraca da biblioteca.

Cuidado

Esperar portabilidade: o atributo é extensão de compilador, e o comportamento depende do linker e do formato do objeto.

Sinônimos

weak symbol

Antônimos

símbolo forte

Veja também

Todos os termos de C