C · Avançado · Português · Técnico
seleção genérica
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)); // doubleExemplos
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