Les Allergies
Alimentaires
Posez votre question Signaler

Gestion des typedef enum en C/C++

ababdge - Dernière réponse le 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...
}
Lire la suite 

Gestion des typedef enum en C/C++ »

4 réponses
Réponse
+0
moins plus
Salut.
moi je fait juste :
enum FlagType {FLAG0,FLAG1};
et ça fonctionne (avec GCC 4.0)
ababdge - 2 oct. 2009 à 16:30
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
Char Snipeur- 16 oct. 2009 à 08:15
Si c'est du C (et non du C++)... ça peut expliquer le problème.
Ajouter un commentaire
Réponse
+0
moins 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.
Ajouter un commentaire
Ce document intitulé « gestion des typedef enum en C/C++ » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?