Aller au contenu

Pourquoi cet enc*$^ù de compilateur me jette ?


Neo_13

Messages recommandés

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

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

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

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

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++ :francais:

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

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... :merci: . 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

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... :D . 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

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

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.

:craint:

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

  • 2 semaines après...
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.

:francais:

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

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

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 ?

:inpactforce: 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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...