Quand j'étais jeune, il y a quelques siècles, j'avais relu le code d'un copain qui voulait se faire une implémentation DIY de listes en C.
Pour contourner le problème de la déclaration du type des éléments de la liste (pour que
newlist(char)
crée une liste de char,
newlist(double)
une liste de double), il avait mis en place une pseudo-fonction dans les directives de préprocesseur. Et comme il avait un TOC sur les ternaires, il n'avait utilisé que ça, pour six types de variables (
char
,
short
,
int
,
long
,
float
,
double
).
Je n'ai pas souvent eu peur devant du code. Jamais, en fait. Excepté devant :
# TYPE(a) = (a == "char" || a == "short" || a == "int") ? (( a == "char") ? char : (a == "short") ? short : int) : ((a == "long") ? long : (a == "float") ? float : double)
M'étant enfui en courant, je n'ai jamais su si ça fonctionnait. Où est rangé le PROZAC ?... PEBKAC.
En gros, il essaye d'assigner plusieurs types de variables en même temps pour une seule variable?