Maison > développement back-end > C++ > Pourquoi une fonction C se compile-t-elle sans instruction de retour explicite malgré la déclaration d'un type de retour ?

Pourquoi une fonction C se compile-t-elle sans instruction de retour explicite malgré la déclaration d'un type de retour ?

Susan Sarandon
Libérer: 2024-12-13 04:41:15
original
856 Les gens l'ont consulté

Why Does a C   Function Compile Without an Explicit Return Statement Despite Declaring a Return Type?

Pourquoi cet extrait de code C se compile-t-il malgré l'absence d'une valeur de retour ?

Dans l'extrait de code fourni :

static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out)
{
    tvec3::Min(a, b, out);
    out.w = min(a.w, b.w);
}
Copier après la connexion

La fonction Min est déclarée comme renvoyant un tvec4, mais le code ne fournit pas d'instruction return explicite. Cela soulève la question de savoir pourquoi le compilateur compile le code sans erreur.

Comportement non défini

Selon le projet de norme C 11, découler de la fin d'une valeur -le retour de la fonction sans fournir de valeur de retour entraîne un comportement indéfini. Cela signifie que le compilateur n'est pas obligé d'émettre une erreur ou un avertissement dans de tels cas.

Options du compilateur

Cependant, les compilateurs peuvent être configurés pour avertir ou même générer des erreurs. pour un comportement indéfini. Par exemple, l'utilisation de l'indicateur -Wall peut souvent déclencher un avertissement du type :

warning: control reaches end of non-void function [-Wreturn-type]
Copier après la connexion

En ajoutant l'indicateur -Werror=return-type, le compilateur traitera cet avertissement comme une erreur, forçant le code à être corrigé.

Visual Studio

Dans Visual Studio, le code générera l'erreur C4716 par défaut :

error C4716: 'Min' : must return a value
Copier après la connexion

Dans les cas où tous les chemins de code ne renvoient pas une valeur, Visual Studio émettra un avertissement (C4715).

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal