int sum_square(i,j) /* liste des noms des paramètres formels */ int i, int j; /* déclaration du type des paramètres */ { int resultat; resultat = i*i + j*j; return resultat; }
En ce qui concerne la déclaration de fonction externe, il faut préfixer avec le mot-clé extern, l'en-tête de la fonction débarrassée de la liste des noms des paramètres, comme ceci :
extern int sum_square();
Dans ce cas, le compilateur ne connaît pas le type des paramètres de
la fonction, il lui est donc impossible de détecter une erreur portant
sur le type des paramètres lors d'un appel de fonction externe.
Cette situation est assez catastrophique et c'est la raison pour laquelle
le comité de normalisation a introduit le concept de prototype de fonction
vu au chapitre .
Il n'a cependant pas voulu faire un changement incompatible, il a donc
décidé que les deux méthodes étaient acceptées, en précisant toutefois
que la méthode K&R était une caractéristique obsolescente.
En clair, cela signifie que cette méthode pourrait être abandonnée
dans une prochaine révision de la norme, même si ça n'a pas été le cas
pour C99 et C11.