Je viens d'avoir un comportement étrange d'une version de g ++ pour Windows que j'ai eu avec Strawberry Perl. Cela m'a permis d'omettre une déclaration de retour.Omettre l'instruction return en C++
J'ai une fonction membre qui retourne une structure composée de deux pointeurs, appelé boundTag
:
struct boundTag Box::getBound(int side) {
struct boundTag retBoundTag;
retBoundTag.box = this;
switch (side)
{
// set retBoundTag.bound based on value of "side"
}
}
Cette fonction m'a donné une mauvaise sortie, et j'ai découvert qu'il avait pas de déclaration de retour. J'avais l'intention de retourner retBoundTag
, mais j'ai oublié d'écrire réellement la déclaration de retour. Une fois que j'ai ajouté return retBoundTag;
tout allait bien. Mais j'ai testé cette fonction et j'ai obtenu la sortie boundTag
correcte. Même maintenant, quand je supprime l'instruction return, g ++ la compile sans avertissement. WTF? Est-il deviner de retourner retBoundTag
?
Vous devriez compiler en utilisant '-Wall'. Les instructions de retour manquantes sont interceptées par '-Wreturn-type'. – jweyrich
J'ai tendance à transformer l'avertissement concernant un retour manquant en erreur avec: '-Werror = return-type'. M'a sauvé beaucoup de temps. –