Je viens de me taper 2 heures de debug sous Dev C++ et je viens de trouver l erreur qui passe a la compille !!!
liste new_liste(arbre element, int poids,liste pere) {
liste temp;
if ((pere==NULL)||(poidsdata.poids))
{
temp=(liste)malloc(sizeof(struct liste));
temp->data.element=element;
temp->data.poids=poids;
temp->suivant=pere;
return temp;
}
okidoki compris !!! C est cool c est ce que j’ ai vu en compilation, vendredi dernier mais que j avais pas trés bien saisis!!! Merci Glop
Sinon la en faites, je m’ explique sur la non utilisation de new !!! En gros je fais du C (ndmoi : juste pour Glop j’ avais ecrit sais a la place de C )et non du C++, car en faites je taf sous linux normaly ( donc compilation sous gcc). Mais je n’ ai pas de vrai compilo C sous Windows XP !!! En consequence, j’ utilise dev c++ .
Deja j’avais bien compri Urlde ca compile mais ca plante. J’avais saisi ca.
Ben non ca a rien de choquant. Bien sur il va verifier les type des parametres et le type de ce qui sort et voir si c’est conforme a la declaration. Mais ce que tu fais des resultats il s’en contre fout. Si tu l’assigne il va verifier le type a gauche et a droite de ton assignation mais si t’en fait rien il s’en fiche. Il peut pas savoir que ta fonction elle prend pas en param un pointeur ou un structure avec un pointeur et que tu va modifier les donnees a l’interieur et finir par retourner un truc super inutile que tu vas ignorer a chaque fois. T’as le droit de faire ca.
Donc il n’y a rien de mal a appeller une fonction sans faire que que ce soit de ce quelle retourne. Y a plein de fonction en C ou en C++ qui retourne qqch dont tu as rien a fouttre. Et vu que c’est meme pas un vrai constructeur ta fonction new_liste() il a aucun moyen de savoir que c’est special et que dans ton cas il devrait planter :P. De toute facon meme les vrais constucteur ca s’appelle pas directement mais avec « new ». Il est meme possible que meme ca on peut appeller sans assigner le resultat dans une variable mais j’ai jamais essaye
y a pas de typages en C++ ??? Car la c’ est un probleme dans la table des symboles du programme en cours de compilation !!! Normallement il doit verifier si la fonction appellait avec les bon objerts et que la valeur retournée est bien stockée. Mais la rien elle est meme pas stocké dans une variable c’ est ca qui me surprends pas toi Glop ???
Je suis supris la ?!? Alors a tout les pro du C/C++ mattez ce source et dites moi
Kouby qui dit que en C# ca ce fait tout facilement et mais que en faites le code il est pas compilé sur ta machine, mais sur des pc de 'crosoft grace au ninternet !!! Faites attention …(/me sort trés vite et va se coucher aussi aller o lit :P)
Moi perso je vois vraiment pas pouquoi ca compilerai pas Mais je rate ptet quelque chose… En C++ du moment que la syntaxe et les structures sont valides… ca passe.
[quote]Je viens de me taper 2 heures de debug sous Dev C++ et je viens de trouver l erreur qui passe a la compille !!!
liste new_liste(arbre element, int poids,liste pere) {
liste temp;
if ((pere==NULL)||(poidsdata.poids))
{
temp=(liste)malloc(sizeof(struct liste));
temp->data.element=element;
temp->data.poids=poids;
temp->suivant=pere;
return temp;
}
bah si ton “temp” etait static ca serait pas un probleme, ou alors j’ai pas compris, et meme, dans certain cas, ca peut marcher : ca depend ou la variable est alloue :nuts:
Kane–sama > arf si j utilise dev c++ c est pas pour le plaisir avant j’ avais un bon soft qui faisait debugger vachement bien mais la plus rien donc dev c++ !!!
donc oui je savais utiliser un debugger
Mais cette erreur sur un gros prog, il fallait y penser quant meme !!!
KOuby
ça me rappelle les Tp de Code ou les mecs, tout fiers, disent : « c’est bon ça compile j’ai fini… » apres un test ça se transphorme en « mince, ça renvoie pas ce qu’il faut »
Un conseil aprend a utiliser un debuger ça set vachement.