|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éclairé
![]() Alex VEtudiant administrateur systèmes et réseaux Inscription : octobre 2007 Messages : 609 ![]() |
Bonjour,
J'ai une drôle d'erreur. J'affecte en retrour un int * à une fonction qui renvoit un int ** et il arrive quand même à me l'afficher correctement. Même si ça compile, je devrais avoir une belle erreur de Windows à l’exécution. Je ne trouve pas d'explication. Je link le projet car il y a trop de lignes de codes. Volontairement, j'ai enlevé des '*'. Mais ça s’exécute normalement quand même. Code :
__________________
UNE REPONSE UTILE : &|| UN PROBLEME RESOLU :
|
||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Auditeur informatique Inscription : avril 2009 Messages : 118 ![]() |
Cela compile certes, mais avec un nombre considérable de warnings !
En compilant ton projet tel quel avec tes options, gcc me renvoie 93 warnings, et si je modifie les trois variables comme dans ton exemple, j'obtiens 108 warnings ... Maintenant, pour répondre strictement à ta question, cela marche quand même parce qu'un pointeur est codé comme un entier. Par exemple, sachant que allocate_1D_i(n) renvoie un pointeur sur un entier : int *s=allocate_1D_i(10) est une écriture correcte qui ne déclenche aucun warning, alors que int s=allocate_1D_i(10) est une écriture incorrecte qui déclenche un warning, toutefois, s étant un entier, il est à même de recevoir un pointeur (qui est de fait un entier), puis lorsque tu écrit display_1D_i(s,10,"1D") alors que le premier argument attendu devrait être un pointeur sur un entier et non un entier, cela déclenche un autre warning car le type n'est pas bon, mais cela fonctionne tout de même car l'entier passé (s) sera interprété comme un pointeur. Donc, tu as autant de warnings qu'un sapin a de boules brillantes et de guirlandes, mais ton code passe quand même ... pour l'instant ! Ce n'est pas une raison pour ne pas chasser chacun de tes warnings, car un warning qui traîne est un bug potentiel ...
__________________
<< Il n'est pas dans Ses intentions de tout faire, ni donc de nous dépouiller de notre libre-arbitre et de cette poignée de gloire qui nous appartient. >> (Le Prince, Nicolas Machiavel) |
|
|
10
|
|
|
#3 |
|
Membre éclairé
![]() Alex VEtudiant administrateur systèmes et réseaux Inscription : octobre 2007 Messages : 609 ![]() |
OKay merci. Avant j'étais persuadé que ce genre d'erreurs auraient fait planter le programme.
Concernant les warnings, ce sont normalement des erreurs dans les printfs duent aux formats d'affichage. Notamment les long double et autres. Je n'arrive as à trouver les formats adéquats. Cordialement
__________________
UNE REPONSE UTILE : &|| UN PROBLEME RESOLU :
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() |
Il n'y a pas de format adéquat sous MinGW pour les long double, parce que MinGW utilise le printf() de la CRT Microsoft, et la taille de long double diffère entre les deux compilos.
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant. "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?" Apparently everyone. -- Raymond Chen. Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com