IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Enumération dans un header sous Win32


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Points : 54
    Points
    54
    Par défaut Enumération dans un header sous Win32
    Bonjour à tous,
    je rencontre un petit problème dans un de mes programmes en C.
    Je développe ce programme sous Codeblocks/GCC, sous Linux pas de problème, en revanche,
    sous Windows ça coince ... et je ne comprends pas pourquoi ... merci d'avance de m'aider à y voir clair.

    Alors voilà j'ai un header (un fichier .h, appelons le "file.h") qui contient une énumération:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    enum styles {
      NONE = -1,
      BALL_AND_STICK = 0,
      WIREFRAME = 1,
      SPACEFILL = 2,
      SPHERES = 3,
      CYLINDERS = 4,
      POINTS = 5
    };
    Ce fichier est appelé par son homologue "file.c"
    Mon problème est le suivant, la compilation sous windows ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: 'POINTS' redeclared as different kind of symbol
    J'ai dans un premier temps pensé que mon header était mal utilisé et en quelque sorte appelé 2 fois,
    la redondance des déclarations de variables entrainant l'erreur précédente ... mais non.
    J'ai ensuite pensé que la variable "POINTS" pouvait être déclarée dans un fichier header que je ne contrôle pas: "windows.h" ou autre ...
    du coup j'ai changé le nom de la variable ... même erreur avec la nouvelle variable ...
    Finalement j'ai purement et simplement supprimé la ligne:
    Et la tout fonctionne, seul cette ligne semble poser problème ... quelqu'un pourrait il m'expliquer ce qui ce passe ???

    Merci d'avance pour vos lumières

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 254
    Points : 538
    Points
    538
    Par défaut
    as-tu déja protéger ton header contre la double inclusion?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifndef __FILE_H__
    #define  __FILE_H__
    #endif
    sinon es-ce que tu inclus ce fichier dans plusieurs fichiers? Le problème pourrait tout simplement être un problême de double inclusion.

  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Probablement, le symbole POINTS est déjà défini ailleurs différemment.
    du coup j'ai changé le nom de la variable
    Tu as changé pour quel symbole ? (accessoirement, ce n'est pas une variable)

  4. #4
    Membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Points : 54
    Points
    54
    Par défaut Re - résolut
    Merci pour vos réponses,

    pour les reprendre dans l'ordre j'ai bien évidement pensé à la double inclusion,
    car j'inclus bien ce header dans plusieurs fichiers ...
    ceci dit je n'ai pas testé l'utilisation de l'instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifndef __FILE_H__
    #define  __FILE_H__
    #endif
    Je vais essayer mais je suis sceptique, en effet si cela était le cas GCC râlerait
    pour toutes les autres définitions présentent dans le fichier ".h".
    Je pense également que la double inclusion ne compilerai pas sous Linux, alors que
    dans ce cas je n'ai aucun problème.

    Pour le nom de la (nouvelle) variable j'ai bien pris le soin de choisir quelque chose de non utilisé ...

    Last minut !!!

    L'instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifndef __FILE_H__
    #define  __FILE_H__
    #endif
    viens de m'apporter la solution de mon problème ... 'POINTS' est définit dans un autre fichier,
    Je n'avais pas ce message avant cela ...
    Et donc lorsque j'ai changé de nom de variable j'ai du aussi mettre les pieds dans le plat !

    Merci pour votre aide

    S.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    POINTS est défini dans windef.h

Discussions similaires

  1. [CVS]: plantage du service sous win32
    Par sleepy2002 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 01/06/2004, 10h09
  2. Recherche de texte dans un blob sous oracle
    Par nesbla dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/05/2004, 11h11
  3. Deplacer un curseur dans un RichEdit sous visual c
    Par tweek dans le forum Windows
    Réponses: 7
    Dernier message: 14/01/2004, 00h29
  4. select dans un trigger sous Postgresql
    Par kastor_grog dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/09/2003, 17h00
  5. [MFC] image dans un header de CListCtrl
    Par tut dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2003, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo