Maison >développement back-end >C++ >Pourquoi ma fonction C non nulle ne renvoyant aucune valeur ne produit-elle pas une erreur du compilateur ?

Pourquoi ma fonction C non nulle ne renvoyant aucune valeur ne produit-elle pas une erreur du compilateur ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-16 08:27:14962parcourir

Why Doesn't My Non-Void C   Function Returning No Value Produce a Compiler Error?

La fonction non nulle ne renvoie pas de valeur dans le code C

Question :

Ce code C ci-dessous a un fonction non vide qui ne renvoie pas de valeur :

static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out)
{
    tvec3::Min(a,b,out);
    out.w = min(a.w,b.w);
}

Pourquoi compile-t-il sans erreur ?

Réponse :

Ce comportement n'est pas défini selon le projet de norme C 11, section 6.6.3, paragraphe 2, qui stipule que s'écoulant de la fin d'une valeur -le retour de la fonction entraîne un comportement indéfini.

Avertissements du compilateur et Erreurs :

  • gcc et clang : Peut générer un avertissement à l'aide de l'indicateur -Wall (avertissement : le contrôle atteint la fin de la fonction non vide [-Wreturn-type] ). Cela peut être converti en erreur à l'aide de l'indicateur -Werror=return-type.
  • Visual Studio : Génère l'erreur C4716 ('Min' : doit renvoyer une valeur) par défaut, ou un avertissement C4715 si tous les chemins de code ne renvoient pas un valeur.

Implications :

Un comportement non défini peut conduire à des résultats imprévisibles, y compris des plantages de programmes. Il est recommandé d'utiliser des options du compilateur telles que -Wall et -Wextra pour détecter et corriger les instances de comportement non défini.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn