[C/C ++] déclarations variables sous Visual C++

déclarations variables sous Visual C++ [C/C ++] - Programmation

Marsh Posté le 01-05-2001 à 16:13:54    

Le compilo ne comprend pas la déclaration de cell :
 
typedef struct {
int noDossard;
char numTel[10];
float vitesse;
char nom[25];
} OBJ;
 
typedef struct cel{
OBJ obj;
struct cel * lien_prec;  
struct cel * lien_svt;
} cell;
 
Est ce normal ?
Sous TurboC ça passe nickel !

Reply

Marsh Posté le 01-05-2001 à 16:13:54   

Reply

Marsh Posté le 01-05-2001 à 16:41:22    

ca marche tres bien la def, l'erreur doit venir d'ailleurs.

Reply

Marsh Posté le 01-05-2001 à 17:11:59    

J'ai supposé que l'erreur venait de la déclaration mais c'est vrai je n'en suis pas sure.
En fait ces déclarations sont rangées dans un fichier .h pour tous mes objets et ce fichier est inclu dans un fichier .c (fonctions).
Les erreurs ce manifestent quand je compile le .c, le compilo me met des erreurs à chaque ligne sur laquelle j'utilise mes variables du .h
 
N'y comprend rien ?

Reply

Marsh Posté le 01-05-2001 à 17:29:33    

c'est qoui comme genre d'erreur?

Reply

Marsh Posté le 01-05-2001 à 17:50:38    

Voila en détails :
 
fichier : objet-liste_recursive.h  
 
typedef struct {
int noDossard;
char numTel[10];
float vitesse;
char nom[25];
} OBJ;
 
typedef struct cel{
OBJ obj;
struct cel * lien_prec;  
struct cel * lien_svt;
} cell;
 
typedef struct {
cell * tete;
cell * queue;
} LISTE;
 
fichier : fonctions-liste_recursive.c
 
Le compilo m'indique l'erreur :
error C2275: 'cell' : illegal use of this type as an expression
pour la déclaration cell * tmp de la fonction qui suit :
 
#include "c:\Listes\objet-liste_recursive.h"
 
/*- RECHERCHER_OBJET --------------------------*/
OBJ * RechercherObj(LISTE * l, OBJ * objRech)
{if(ListeVide(l))
 
 return (OBJ *)NULL;
 
cell * tmp;
 
tmp=l->queue;  
if(tmp->obj==objRech)
 
 return tmp;
 
tmp=l->tete;
else if(tmp->obj==objRech)
 
 return tmp;
 
else {  
   
 while(tmp->lien_prec!=objRech && tmp->lien_prec)  
 
  tmp=tmp->lien_prec;  
 
 if(tmp->obj==objRech)
   
  return tmp;
 
 else
 
  return (OBJ *)-1;  
 }
 
Il m'indique également la même erreur quand je veux déclarer un pointeur sur OBJ : OBJ * obj1

Reply

Marsh Posté le 01-05-2001 à 18:21:48    

Plaques l'affaire wpk  
 
Il me manquait simplement une }
 
Merci de ton aide
 
Bye

Reply

Marsh Posté le 01-05-2001 à 18:24:39    

deja, sans compter l'erreur du compilo, y'a des gros problemes dans ton code  
ca par exemple : if(tmp->obj==objRech)  
ca peut pas marcher au vu de la declaration que t'as fait dans ta structure cell.
En plus, soit t'as pas mis tout le code soit sinon, je comprends pas comment ca pouvait marcher avec turboC vu qu'il manque pas mal d'acolades (y'a des else sans if etc)
 
Pour ton probleme d'erreur compilo, essaye de renomer ton fichier .c en .cpp (le code sera compile par un compilo c++ et pas c). Si t'as d'autres erreurs avant les illegal, regle les avant, si t'as oublie un ; ou une } plus haut dans le code ca peut pas marcher.

Reply

Marsh Posté le 01-05-2001 à 18:36:17    

En effet pour mon problème de déclaration il manquait une acolade.
Concernant : if(tmp->obj==objRech) tu as raison ça ne fonctionne pas. En fait cette fonction est brute de dégoffrage elle n'est à ce stade que l'ossature de ma futur fonction recherche. La recherche devra être faite selon un critère, membre de OBJ.
 
Sur turboC, pensant que le pb venait de ma déclaration j'avais simplement tester mes déclarations du .h      
 
Merci encore de ton aide
 
@+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed