Gestion des typedef enum en C/C++

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

2 réponses

  1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Salut.
    moi je fait juste :
    enum FlagType {FLAG0,FLAG1};
    et ça fonctionne (avec GCC 4.0)
    0
    1. 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
      1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331 > ababdge
         
        Si c'est du C (et non du C++)... ça peut expliquer le problème.
        0
  2. watou Messages postés 241 Statut Membre 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