Gestion des typedef enum en C/C++

Fermé
ababdge - 2 oct. 2009 à 16:13
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 16 oct. 2009 à 08:15
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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
2 oct. 2009 à 16:23
Salut.
moi je fait juste :
enum FlagType {FLAG0,FLAG1};
et ça fonctionne (avec GCC 4.0)
0
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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298 > ababdge
16 oct. 2009 à 08:15
Si c'est du C (et non du C++)... ça peut expliquer le problème.
0
watou Messages postés 199 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 19 avril 2013 28
3 oct. 2009 à 19:46
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