g++ et return mis automatiquement

g++ et return mis automatiquement - C++ - Programmation

Marsh Posté le 26-11-2006 à 16:06:19    

Hello.
 
J'ai ce code:
struct_texture *loaderImg::load(void)
{
 p->load();
}
 
Le compilateur me fait un warning (normal je ne fait aucun return) et pourtant mon programme qui utilise la classe loaderImg fonctionne !
J'ai eu du mal à comprendre pourquoi mon programme fonctionnait et puis après quelques tests, j'ai compris que le compilateur remplaçait automatiquement "p->load();" en "return(p->load());"
C'est très très bizzard, non ? C'est spécifique au compilateur g++ qui va bientot tout programmé à ma place si ça continue comme ça ou c'est une règle bizzard du c++ ?
 

Reply

Marsh Posté le 26-11-2006 à 16:06:19   

Reply

Marsh Posté le 26-11-2006 à 20:11:08    

Il est beaucoup plus probable que, non content de commettre une erreur grossière en ne respectant pas la signature de la fonction, vous vous méprenez dans l'interprétation du résultat; à savoir que 'p->load' retourne le pointeur tant désiré, sur la pile ou dans un registre, et que 'loaderImg::load' ne faisant pratiquement rien et ayant la même signature, par coincidence vous vous retrouviez avec qque chose qui marchouille.

 

Rien de bizarre. A l'avenir, il serait plus judicieux de vous remettre en cause que le compilateur.


Message édité par tbp le 26-11-2006 à 20:11:33
Reply

Marsh Posté le 26-11-2006 à 20:42:44    

Omettre de retourner une valeur est un comportement indéfini pour les fonctions ne retournant pas void, selon §6.6.3

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed