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 }
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 }
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!