Gestion des typedef enum en C/C++

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...
}
Configuration: Windows XP Internet Explorer 7.0

2 réponses

  1. 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
    1. Contributeur
      Salut.
      moi je fait juste :
      enum FlagType {FLAG0,FLAG1};
      et ça fonctionne (avec GCC 4.0)
      0
      1. 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
      2. Contributeur
        @ababdgeSi c'est du C (et non du C++)... ça peut expliquer le problème.
        0