Affichage liste chaine C90
2 participants
Page 1 sur 1
Affichage liste chaine C90
Bonjour,
Je cherche a afficher les différents élèments d'une structure, pour cela j'ai une fonction récursive terminal.
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
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
Re: Affichage liste chaine C90
Normal. La fonction est définie comme ne retournant rien, or elle retourne la valeur retournée par printf().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"
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);
}
- Code:
void print(cell *list) {
if (list == NULL)
return;
printf("%s ",cell->name);
print(cell->next);
return ;
}
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|