June 10, 200322 yr typedef struct point { char el; struct point *fg; struct point *fd; } noeud; Je crois me rappeler que sous GCC/Solaris, ça compilait, et là sous visual C++ ça compile pas... MS qui as pris des liberté avec ANSI???
June 11, 200322 yr Essaie typedef struct point { char el; point *fg; point *fd; } noeud; Peut etre que VC++ prend le struct comme un typedef par défaut et est pas content paske tu defini 3 fois la struct 'point'. Sinon c'est quoi le message d'erreur ? PS: C'est clair que MS a pris plein de libertés avec Visual C++ et c'est encore pire avec le .NET, donc faut se méfier.
June 11, 200322 yr Author Le message d'erreur, c'est un truc genre redefinition type... Vu qu'il me fais chier... retour sur TX/Solaris/GCC... et ça a été... merci bien... Et VisualC++ : :hellofuck:
June 11, 200322 yr Ouais ca devait etre ca l'erreur, multiple definition. Mais t'as bien fait de repasser sous gcc car vc++ et ANSI ca fait 2.
June 12, 200322 yr Essaie typedef struct point { char el; point *fg; point *fd; } noeud; Peut etre que VC++ prend le struct comme un typedef par défaut et est pas content paske tu defini 3 fois la struct 'point'. Sinon c'est quoi le message d'erreur ? PS: C'est clair que MS a pris plein de libertés avec Visual C++ et c'est encore pire avec le .NET, donc faut se méfier. Je viens d'essayer avec VC++ (.NET) et aucun message d'erreur n'apparait, que ce soit "struct point *" ou "point *"... Peut-être l'erreur est-elle ailleurs ? M'enfin, si avec gcc ça marche tout va bien :o)
June 12, 200322 yr Je n'utilises jamais de structures récursives en général. Mais si c'est censé etre un pointeur sur une structure de type struct point, je pense que ce serait plutôt : typedef struct point { char el; struct point *fg; struct point *fd; } noeud; ou typedef struct point { char el; noeud *fg; noeud *fd; } noeud; Mais pas sûr du tout.
June 12, 200322 yr Je viens d'essayer avec VC++ (.NET) et aucun message d'erreur n'apparait, que ce soit "struct point *" ou "point *"... Peut-être l'erreur est-elle ailleurs ? M'enfin, si avec gcc ça marche tout va bien :o) C'est sur que c'est le compilateur a qui il faut faire confiance :-)
June 13, 200322 yr Author Je n'utilises jamais de structures récursives en général. Mais si c'est censé etre un pointeur sur une structure de type struct point, je pense que ce serait plutôt : typedef struct point { char el; struct point *fg; struct point *fd; } noeud; ou typedef struct point { char el; noeud *fg; noeud *fd; } noeud; Mais pas sûr du tout. Le premier code fonctionne sous gcc (sous win et sous solaris). Le deuxième pas...Et VC++ La deuxième solution ne devrait pas marcher car struct point n'est pas noeud au moment de noeud *fg
June 13, 200322 yr De toute façon si ça marche sous gcc, pas de pb. Y a ka utiliser ça. Gcc powwwaaaaa. Mais gcc compile ce qui est ansi et ce qui ne l'est pas également (comme les commentaires // qui ne sont pas ansi pour c ou les long long...) Ca ne veut donc pas dire que WC( ) n'est pas ansi.
June 13, 200322 yr Ecris le comme ça, ainsi tu devrais pas avoir de problème peu importe le compilateur struct point { char el; point *fg; point *fd; }; typedef struct point noeud; ta première version compile sous borland, je sais pas trop quoi penser
June 13, 200322 yr En fait ce que je pige pas dans ton code c'est que pour déclarer tes pointeurs de structures 'point', tu tapes struct point *fg; et non point *fg;
June 14, 200322 yr Author En fait ce que je pige pas dans ton code c'est que pour déclarer tes pointeurs de structures 'point', tu tapes struct point *fg; et non point *fg; Alors là, j'ai une explication :- on me l'a enseigné comme ça - sous GCC/Solaris, c'est comme ça que ça se passe... (Mais, c'est un vieux GCC, donc ptetre que maintenant, on fait plus comme ça... . comme quand je fais un malloc, je suis obliger de dire (int *)malloc(int) gnagnagna, alors qu'il me semble que maintenant, c'est juste malloc(int) EDIT sizeof(int) bien sûr
June 14, 200322 yr le problème semble néanmoins venir du compilateur MS, car ma fois GNU et Borland compile sans broncher
June 15, 200322 yr En fait ce que je pige pas dans ton code c'est que pour déclarer tes pointeurs de structures 'point', tu tapes struct point *fg; et non point *fg; Alors là, j'ai une explication :- on me l'a enseigné comme ça - sous GCC/Solaris, c'est comme ça que ça se passe... (Mais, c'est un vieux GCC, donc ptetre que maintenant, on fait plus comme ça... . comme quand je fais un malloc, je suis obliger de dire (int *)malloc(int) gnagnagna, alors qu'il me semble que maintenant, c'est juste malloc(int) EDIT sizeof(int) bien sûr malloc(sizeof(int)) fontionne sous gcc en effet pourvu que t'ai une variable de type pointeur sur intger pour le récupérer, mais rien ne t'empèche de mettre (int *) devant. Son temps d'exéction est très négligeable devant celui de malloc et c'est plus propre et c'est plus sûr et c'est utilisé régulièrement dans certains cas (cast et ou gtk etc..).
June 15, 200322 yr En fait ce que je pige pas dans ton code c'est que pour déclarer tes pointeurs de structures 'point', tu tapes struct point *fg; et non point *fg; Ca c'est comme ça qu'il faut faire en C, meme si le C++ permet d'omettre le 'struct"
June 16, 200322 yr kjus> ok je savais pas non plus. merci en tout cas de l'info mais y'avait déjà les struct en c ?
June 16, 200322 yr kjus> ok je savais pas non plus.merci en tout cas de l'info mais y'avait déjà les struct en c ? Bien sûr que oui. Tout est dans le C. Seul la façon d'écrire le source est légèrement modifiée en C++, mais pas la base.
June 16, 200322 yr kjus> ok je savais pas non plus.merci en tout cas de l'info mais y'avait déjà les struct en c ? Bien sûr que oui. Tout est dans le C. Seul la façon d'écrire le source est légèrement modifiée en C++, mais pas la base. En tous cas ya pas de classes en C. Ca c'est sur. Du moins ya pas de notions d'objets, donc héritage et compagnie...
June 24, 200322 yr kjus> ok je savais pas non plus.merci en tout cas de l'info mais y'avait déjà les struct en c ? Bien sûr que oui. Tout est dans le C. Seul la façon d'écrire le source est légèrement modifiée en C++, mais pas la base. En tous cas ya pas de classes en C. Ca c'est sur. Du moins ya pas de notions d'objets, donc héritage et compagnie... Evidament, le C est un lagague procédural. Seul le C++ a hérité de la notion d'objet qui permet de faire du graphisme. Mais en C pur il reste GTK. ___________________________ Feu theocrite. Maybe back later.
June 25, 200322 yr Evidament, le C est un lagague procédural. Seul le C++ a hérité de la notion d'objet qui permet de faire du graphisme. Mais en C pur il reste GTK. ___________________________ Feu theocrite. Maybe back later. Je vois pas le rapport entre les objets et le graphisme. Les objets permettent de faire bien plus que du graphisme! Je pense que t'as pas bien saisi ce qu'est vraiment un objet. Tu penses variment qu'en C il etait impossible de faire du graphisme ? Avec borland et sa vielle lib graphics.h tu peux tres bien dessiner des beaux boutons et meme faire un paint. D'ailleurs il existe meme KPaint entierement code avec cette lib.
June 26, 200322 yr Je vois pas le rapport entre les objets et le graphisme. Un objet permet de faire du graphisme. Tu penses variment qu'en C il etait impossible de faire du graphisme ? Et gtk J'en parle au dessus !!!!!! ___________________________ Feu theocrite. Maybe back later. (de moins en moins sur)
June 26, 200322 yr Désolé, je maintiens ce que jai dis sur le fait que tu ne dois pas avoir bien saisi la notion d'objet. Un objet permet de faire du graphisme, mais on peut très bien faire du graphisme sans objets. La programmation orientée objet peut faire bien plus que cela. A mon avis tu confonds la notion d'objet qu'on attribue aux textbox, commandbuttons, listbox ('objets' typiques ActiveX de VB) et autres à la notion définie lorsque lon parle de prog orientée objet, comme pour le C++ ou le Java, language 100% objet. Et c'est bien de celle que l'on parle avec l'arrivée des classes et de cette notion d'objet avec le C++.
June 26, 200322 yr Un point pour Emerica CreateDC,CreateCompatibleDC, et tout le tintouin, ne sont pas fait pour les chiens ! :) On peut -heureusement- coder en C et faire de beaux dessins partout.
Archived
This topic is now archived and is closed to further replies.