Maison > développement back-end > C++ > Une fonction C peut-elle omettre en toute sécurité une instruction « return » si elle n'est pas « void » ?

Une fonction C peut-elle omettre en toute sécurité une instruction « return » si elle n'est pas « void » ?

Patricia Arquette
Libérer: 2024-12-05 09:17:09
original
456 Les gens l'ont consulté

Can a C   Function Safely Omit a `return` Statement if it's Not `void`?

L'omission du « retour » dans une fonction non vide est-elle acceptable ?

Lorsqu'une fonction ne renvoie aucune valeur mais a un retour non vide tapez, on s'attend à ce qu'un compilateur génère une erreur. Cependant, dans certains cas, les compilateurs peuvent autoriser le passage d'un tel code sans générer d'erreur.

Exemple

Considérez le code suivant :

int func1() {
    return; // ERROR: no return value
}

int func2() {
    // Does not return anything
}
Copier après la connexion

Alors que func1 génère une erreur en raison de l'instruction return manquante, ce n'est pas le cas de func2. Cela peut sembler incohérent.

Raison sous-jacente

En C , autoriser les fonctions sans retour avec un type de retour non nul a un comportement indéfini. Cependant, les compilateurs émettent souvent des avertissements au lieu d'erreurs pour maintenir la compatibilité avec le code existant.

La norme C évite délibérément d'imposer une erreur de compilation dans cette situation, car il est difficile de déterminer si une fonction se termine réellement sans valeur de retour.

Considérez cet exemple :

int func3() {
    // ...
    if (condition) {
        // Does not return
    }

    return 0; // Reached only if condition is false
}
Copier après la connexion

Dans ce scénario, le compilateur ne peut pas savoir si le code s'exécutera à la fin de la fonction ou sortira via une exception. Si une erreur était appliquée pour tous les cas sans valeur de retour, le programme pourrait être rejeté même s'il est valide.

Conclusion

Autoriser les fonctions sans retour avec des valeurs non renvoyées. Les types de retour void sont une source potentielle de comportement indéfini. Bien que les compilateurs puissent émettre des avertissements, ils optent souvent pour un comportement permissif pour garantir la compatibilité. Cependant, il est fortement recommandé de toujours inclure une instruction return appropriée pour maintenir la clarté du code et éviter les problèmes potentiels.

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