personne rajoute rien. en C il n'y a pas de surcharge de fonction, donc pour la liaison, seul son nom est nécessaire. ensuite, quand une fonction n'est pas déclarée, le compilateur synthétise un prototype int f(int) ... au final, l'association int f(int) et double f(char, double, ...) est toujours valide. seulement à l'exécution, boom. donc oui, inclus toujours ce qu'il faut, dis à ton compilateur de gueuler un peu et ça passera.
le bug classique, c'est avec malloc, la converstion void* -> int fout en l'air ton pointeur comme double -> int à mité ton résultat