Affichage liste chaine C90

Aller en bas

Affichage liste chaine C90 Empty Affichage liste chaine C90

Message  Piranha le Jeu 19 Nov 2009 - 19:40

Bonjour,

Je cherche a afficher les différents élèments d'une structure, pour cela j'ai une fonction récursive terminal.
Code:
void print(cell *list) {

   if (list == NULL)
      return;

   printf("%s ",cell->name);
   
   return print(cell->next);
}

A ma grande surprise ce code n'est pas valide avec la norme C90, lorsque je le compile de la maniere suivante :
gcc -Wall -g -ansi -pedantic file.c

J'ai le warning suivant :
"warning: ISO C forbids ‘return’ with expression, in function returning void"

Il n'est pas possible de faire de la récursivité terminal avec une fonction void si l'on respecte la norme C90 ?

Merci

Piranha

Messages : 1
Date d'inscription : 19/11/2009

Revenir en haut Aller en bas

Affichage liste chaine C90 Empty Re: Affichage liste chaine C90

Message  -ed- le Sam 21 Nov 2009 - 20:43

Piranha a écrit:je cherche a afficher les différents élèments d'une structure, pour cela j'ai une fonction récursive terminal.
Code:
void print(cell *list) {

   if (list == NULL)
      return;

   printf("%s ",cell->name);
   
   return print(cell->next);
}

A ma grande surprise ce code n'est pas valide avec la norme C90, lorsque je le compile de la maniere suivante :
gcc -Wall -g -ansi -pedantic file.c

J'ai le warning suivant :
"warning: ISO C forbids ‘return’ with expression, in function returning void"
Normal. La fonction est définie comme ne retournant rien, or elle retourne la valeur retournée par printf().
Il suffit de définir la fonction comme retournant la même chose qu'un printf(), c'est à dire un int...

Code:
int print(cell *list) {

   if (list == NULL)
      return 0;

   printf("%s ",cell->name);
   
   return print(cell->next);
}
ou alors, on sépare le print() du retour :
Code:
void print(cell *list) {

   if (list == NULL)
      return;

   printf("%s ",cell->name);
   print(cell->next);
   return ;
}
L'idée, c'est d'être cohérent ...

_________________
C is a sharp tool !
-ed-
-ed-
Admin
Admin

Messages : 290
Date d'inscription : 26/05/2008
Age : 63
Localisation : Paris 14eme arrondissement (75, France)

http://bien-programmer.fr

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser