Maison > développement back-end > C++ > Les compilateurs devraient-ils générer des erreurs pour les fonctions manquant de valeurs de retour en C ?

Les compilateurs devraient-ils générer des erreurs pour les fonctions manquant de valeurs de retour en C ?

Mary-Kate Olsen
Libérer: 2024-12-24 06:43:13
original
917 Les gens l'ont consulté

Should Compilers Throw Errors for Functions Lacking Return Values in C  ?

Est-il acceptable que les compilateurs renvoient des déchets lorsqu'une fonction déclare un type de retour non nul mais ne parvient pas à renvoyer une valeur ?

Le l'absence d'une instruction return dans une fonction avec un type de retour non vide soulève des questions sur le comportement du compilateur. Bien que le compilateur puisse sembler renvoyer des déchets dans de tels cas, ce n'est pas une solution idéale.

Pourquoi n'est-ce pas une erreur ?

En C , les fonctions sans une valeur de retour présente un comportement indéfini. Cependant, la plupart des compilateurs émettent des avertissements plutôt que des erreurs. En effet, il n'est pas toujours simple pour les compilateurs de déterminer si une fonction s'exécute réellement à la fin ou se termine via une exception.

Considérez l'exemple suivant :

int func1() {
    return; // error
}

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

Dans ce cas, func2 devrait théoriquement déclencher une erreur, mais ce n'est pas le cas. En effet, le compilateur ne peut pas garantir que func2 ne se terminera pas via une exception, ce qui rend difficile la preuve qu'il s'exécute réellement à la fin de la fonction.

Pourquoi ne devrait-il pas générer une erreur ?

Contrairement aux variables non initialisées, qui posent clairement problème, l'absence de valeur de retour d'une fonction n'est pas toujours un problème. Par exemple :

int func3() {
    func4();
}
Copier après la connexion

Si func4 lève une exception, alors la valeur de retour manquante de func3 n'a pas d'importance. Cependant, le compilateur ne peut pas toujours déterminer si func4 lancera ou non, surtout lorsqu'on considère du code compilé séparément.

En conclusion, bien que le comportement non défini de C pour les fonctions sans valeur de retour ne soit pas idéal, les compilateurs émettent généralement des avertissements plutôt que des erreurs pour éviter d'éventuels faux positifs dus à la complexité de déterminer le chemin d'exécution réel d'une fonction.

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