Neo_13 Posté(e) le 10 juin 2003 Partager Posté(e) le 10 juin 2003 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??? Lien vers le commentaire Partager sur d’autres sites More sharing options...
nextrick Posté(e) le 10 juin 2003 Partager Posté(e) le 10 juin 2003 lut! c'est pour faire quoi ce prog??? Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 11 juin 2003 Partager Posté(e) le 11 juin 2003 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo_13 Posté(e) le 11 juin 2003 Auteur Partager Posté(e) le 11 juin 2003 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: Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 11 juin 2003 Partager Posté(e) le 11 juin 2003 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Irgoff Posté(e) le 12 juin 2003 Partager Posté(e) le 12 juin 2003 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 12 juin 2003 Partager Posté(e) le 12 juin 2003 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 12 juin 2003 Partager Posté(e) le 12 juin 2003 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 :-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo_13 Posté(e) le 13 juin 2003 Auteur Partager Posté(e) le 13 juin 2003 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 13 juin 2003 Partager Posté(e) le 13 juin 2003 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
calavera Posté(e) le 13 juin 2003 Partager Posté(e) le 13 juin 2003 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 13 juin 2003 Partager Posté(e) le 13 juin 2003 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; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo_13 Posté(e) le 14 juin 2003 Auteur Partager Posté(e) le 14 juin 2003 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
calavera Posté(e) le 14 juin 2003 Partager Posté(e) le 14 juin 2003 le problème semble néanmoins venir du compilateur MS, car ma fois GNU et Borland compile sans broncher Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 15 juin 2003 Partager Posté(e) le 15 juin 2003 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..). Lien vers le commentaire Partager sur d’autres sites More sharing options...
kjus Posté(e) le 15 juin 2003 Partager Posté(e) le 15 juin 2003 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" Lien vers le commentaire Partager sur d’autres sites More sharing options...
calavera Posté(e) le 16 juin 2003 Partager Posté(e) le 16 juin 2003 kjus> ok je savais pas non plus. merci en tout cas de l'info mais y'avait déjà les struct en c ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 16 juin 2003 Partager Posté(e) le 16 juin 2003 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 16 juin 2003 Partager Posté(e) le 16 juin 2003 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité Posté(e) le 24 juin 2003 Partager Posté(e) le 24 juin 2003 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 25 juin 2003 Partager Posté(e) le 25 juin 2003 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité Posté(e) le 26 juin 2003 Partager Posté(e) le 26 juin 2003 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 26 juin 2003 Partager Posté(e) le 26 juin 2003 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++. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Irgoff Posté(e) le 26 juin 2003 Partager Posté(e) le 26 juin 2003 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.