Affichage liste chaine C90

Voir le sujet précédent Voir le sujet suivant Aller en bas

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

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-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum