ExpertiDict

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

seleção genérica

/se.leˈsɐ̃w ʒeˈnɛ.ɾi.kɐ/substantivo

Expressão do C11, escrita com _Generic, que escolhe uma entre várias expressões conforme o tipo do argumento. Em geral é usada dentro de macros para simular sobrecarga.

Onde usar

Permite que uma macro como abs_g(x) chame abs, labs ou fabs conforme o tipo. É assim que <tgmath.h> funciona por baixo.

Em código

#define NOME(x) _Generic((x), \
  int: "int", \
  double: "double", \
  default: "outro")
puts(NOME(3)); // int
puts(NOME(3.0)); // double

Exemplos

Uso seleção genérica para a macro escolher a função certa para cada tipo.

A seleção genérica é resolvida na compilação, não em tempo de execução.

Cuidado

Esperar que a escolha dependa do valor: ela é feita em tempo de compilação pelo tipo, e o argumento controlador não é avaliado.

Sinônimos

_Generic

Veja também

Todos os termos de C