Omettre l'instruction Return en C : une entreprise risquée
En C , omettre une instruction return dans une fonction non vide (sauf pour la fonction principale) peut entraîner des conséquences imprévisibles. Contrairement à la confusion ressentie par l'utilisateur, g par défaut ne devine pas renvoyer la dernière variable définie.
La norme C indique explicitement que le fait de découler de la fin d'une fonction sans instruction return invoque undefined behavior dans les fonctions de retour de valeur. Cela signifie que le compilateur n'est pas obligé de renvoyer une valeur spécifique et que le programme peut se comporter de manière erratique ou même planter.
Considérez l'exemple fourni :
struct boundTag Box::getBound(int side) { struct boundTag retBoundTag; retBoundTag.box = this; // ... (code omitted) }
Bien que cette fonction n'ait pas de retour déclaration, il a été observé que g l'avait compilé sans avertissement. En effet, le compilateur C génère souvent une instruction return par défaut pour gérer la fin des fonctions non vides sans retour explicite. Cependant, cette pratique n'est pas garantie et peut conduire à des résultats inattendus.
Pour garantir un bon comportement, il est impératif de toujours inclure une instruction return explicite dans les fonctions non vides. Si la fonction est censée renvoyer une valeur, telle qu'unboundTag, l'instruction return doit attribuer cette valeur au type de retour de la fonction.
Il est également recommandé de compiler du code C avec des options plus strictes, telles que -Wall , qui avertira généralement de l'absence d'instructions return dans les fonctions non vides et d'autres 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!