Gestion des typedef enum en C/C++

ababdge -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'essaie de compiler un projet et je me heurte à cette erreur de compil sous VisualC++

error C2275: 'FlagType' : illegal use of this type as an expression

En fait j'ai un fichier qui regroupe mes enums:

#ifndef SVC_DEFS_H
#define SVC_DEFS_H

#if defined (__cplusplus)
extern "C" {
#endif

typedef enum
{
FLAG0 = 0,
FLAG1 = 1
} FlagType;

#if defined (__cplusplus)
}
#endif

#endif

Puis dans un autre fichier C :

void ma_fonction(...)
{
...
FlagType monFlag; // Et c'est sur cette ligne que la compil plante...
}
A voir également:

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
moi je fait juste :
enum FlagType {FLAG0,FLAG1};
et ça fonctionne (avec GCC 4.0)
0
ababdge
 
Merci, mais si je fais ainsi la compil rale plus tôt encore !!

En fait ma_fonction prend un FlagType* parmi ses paramètres, et alors ça râle sur la ligne FlagType* monParam :-(

J'ai aussi tenté la version
enum
{
FLAG0 = 0,
FLAG1 = 1
} _FlagType;
typedef enum _FlagType FlagType;

Pas mieux :-(

Ca marchait très bien en C++ dans une classe dédiée

ClassDefs {
enum FlagType
{
FLAG0 = 0,
FLAG1= 1
};
}

Mais en passant le tout en C ça ne marche plus
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299 > ababdge
 
Si c'est du C (et non du C++)... ça peut expliquer le problème.
0
watou Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   28
 
moi j'ai utilisé:
typedef enum 
{ 
FLAG0 = 0, 
FLAG1 = 1 
} FlagType; 

puis :
FlagType monFlag;

et ca marche !! dans un fichier "exemple.c"

essaie d'enlever tous les "#if defined endif " puis recommence.
0