Exercice
Voici deux fonctions C déclarées ainsi :
23 bool paire(int i){
24 return !impaire(i) ;
25 }
26 bool impaire(int i){
27 return (i%2!=0) ;
28 }
23 bool paire(int i){ 24 return !impaire(i) ; 25 } 26 bool impaire(int i){ 27 return (i%2!=0) ; 28 }
Une compilation du programme nous donne les messages suivants :
« ..\src\fonction.c: In function 'paire': »
« ..\src\fonction.c:24:2: warning: implicit declaration of function 'impaire' [-Wimplicit-function-declaration] »
« return impaire(i); »
« ^ »
« ..\src\fonction.c: At top level: »
« ..\src\fonction.c:26:6: error: conflicting types for 'impaire' »
« bool impaire(int i){ »
« ^ »
« ..\src\fonction.c:24:9: note: previous implicit declaration of 'impaire' was here »
« return impaire(i); »
« ^ »
Précisez ci-dessous les informations que vous pouvez tirer de ces messages.
Nous remarquons qu'à la ligne 24, une déclaration implicite est détectée. Par défaut, le type de retour d'une fonction est int. C'est donc le type enregistré pour cette déclaration.
En ligne 26, nous déclarons que la fonction retourne un résultat bool. Le compilateur signale donc un conflit de types.