Gestion des typedef enum en C/C++
ababdge
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 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...
}
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...
}
Configuration: Windows XP Internet Explorer 7.0
2 réponses
-
Salut.
moi je fait juste :
enum FlagType {FLAG0,FLAG1};
et ça fonctionne (avec GCC 4.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
-
-
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.