C, erreur: le contrôle a atteint sa fin de non-void function [-Werror,-Wreturn-type]
struct quad {
int a;
int b;
int c;
}
int f(const int a, const int b, const int c, const int x){
const int l = a*x*x + b*x + c;
return l;
}
int safe_quad_eval(const struct quad q, const int x){
(f(q.a,q.b,q.c,x)>INT_MAX)||(f(q.a,q.b,q.c,x)<(-INT_MAX)) ? INT_MIN : f(q.a,q.b,q.c,x);
}
Je ne suis pas sûr de ce que fait cette erreur signifie? et comment le résoudre?
OriginalL'auteur user2840926 | 2013-10-03
Vous devez vous connecter pour publier un commentaire.
fonction
int safe_quad_eval(...)
n'a pas de valeur de retour.vous avez besoin de retourner un int.
Peut-être vous voulez
OriginalL'auteur CS Pei
safe_quad_eval()
n'ont pas d'instruction return. Est-il censé êtrereturn (f(q.a,q.b...
?OriginalL'auteur John3136
Si nous vérifions le Options D'Alerte section de la
gcc
nous allons voir ci-après pour-Wreturn-type
:Dans ce cas
safe_quad_eval
est déclarée pour retournerint
mais vous tomber de la fin de fonction sansreturn
déclaration. Cela peut entraîner un comportement indéfini est d'essayer d'utiliser la valeur de retour de cette fonction, que par le C99 projet de norme section6.9.1
des définitions de Fonction paragraphe 12 dit:De sorte que vous devrez probablement changer votre fonction pour
return
une valeur.Par souci d'exhaustivité,
-Werror
entraîne le compilateur pour transformer les avertissements en erreurs, du manuel lié ci-dessus:OriginalL'auteur Shafik Yaghmour
La
int
au début de votre fonctionsafe_quad_eval
indique qu'il doit retourner une valeur de type entier. Cependant, comme vous l'avez écrit, il ne fait pas de retour du tout (il n'a pas dereturn
déclaration en elle).Pour résoudre ce problème, ajoutez
return
au début de son corps:OriginalL'auteur Mac
Je suppose que vous voulez retourner la valeur dans
safe_quad_eval
depuis le type de retour est déclaré comme unint
, mais vous avez oublié lereturn
déclaration. L'ajout dereturn
doit empêcher le compilateur de se plaindre.error: control reaches end of non-void function
signifie qu'une fonction a été déclarée non-nulle (safe_quad_eval
attend à uneint
valeur de retour dans ce cas), mais vous n'avez pas retourner une valeur. L'ajout d'unint
valeur de retour corrige l'erreur.OriginalL'auteur shanet