Une erreur à la compilation

Une erreur à la compilation - C - Programmation

Marsh Posté le 30-05-2010 à 19:04:49    

Bonjour !  
j'ai une erreur qui survient je ne sais d'où lorsque je compile :  
>>gcc td1.c -o test
/tmp/cc9L0eFL:td1.c(.text+0x1ab): undefined reference to '_factorielle' collect2: ld returned 1 exit status
 
Voici le code :

Code :
  1. #include <stdio.h>
  2. int factorielle_boucle(int n){
  3.      int produit=1;
  4.      while(n!=1){
  5.       produit*=n;
  6.       n--;
  7.      }
  8.      return produit;
  9. }
  10. int factorielle_recur(int n){
  11.      if(n==1) return 1;
  12.      else return n*factorielle(n-1);
  13. }
  14. int main(void){
  15.      printf("fact boucle : %d\n",factorielle_boucle(5));
  16.      printf("fact recur : %d\n",factorielle_recur(5));
  17. }


 
Cependant, si je change le nom de la méthode "factorielle_boucle" en "factorielle" je n'ai plus d'erreur....
Comment cela se fait il?
Merci d'avance, bonne soirée

Reply

Marsh Posté le 30-05-2010 à 19:04:49   

Reply

Marsh Posté le 30-05-2010 à 19:14:22    

Ligne 14.  En passant, -Wall -W est le niveau minimum de warning a utiliser avec gcc.
 


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 30-05-2010 à 19:18:12    

else return n*factorielle(n-1);

Cette ligne appelle la fonction (on parle de fonction plutôt que de méthode) qui se nomme "factorielle". Il faudrait donc qu'elle existe. Il faudrait probablement faire plutôt un appel à la fonction "factorielle_recur".

Reply

Marsh Posté le 30-05-2010 à 19:25:30    

oh la honte.... :( merci pourtant j'utilise tout le temps -Wall , mais comme c'était un petit programme tout simple qui ne fait aucun mal j'ai pas pensé.... merci....

Reply

Marsh Posté le 30-05-2010 à 19:26:06    

merci bien , c'est fou de ne pas voir ce genre d'erreur...

Reply

Marsh Posté le 30-05-2010 à 21:04:29    

le message d'erreur était pourtant super clair :/
Il faut savoir lire les messages d'erreur, et ne pas s'arrêter au mot "error" :)


---------------
Blablaté par Harko
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed