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

MFC Discussion :

Pb d'includes ...


Sujet :

MFC

  1. #1
    Membre éclairé

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Par défaut Pb d'includes ...
    Bonjour

    J'ai un problème d'include qui me donne ce genre d'erreur :
    FicheDlg.obj : error LNK2005: "unsigned long TURQUOISECOLOR" (?TURQUOISECOLOR@@3KA) already defined in fich2.obj
    FicheDlg.obj : error LNK2005: "unsigned long SKYBLUECOLOR" (?SKYBLUECOLOR@@3KA) already defined in fich2.obj
    ...
    J'ai donc un fichier Constantes.h qui contient en gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #ifndef _CONSTDEF
    #define _CONSTDEF
     
    CBrush SKYBLUEBRUSH;
    CBrush TURQUOISEBRUSH;
     
    COLORREF SKYBLUECOLOR=RGB(173,216,230);
    COLORREF TURQUOISECOLOR=RGB(0,255,255);
     
    #endif
    J'ai ensuite mes fichiers cpp qui ont un include vers Constantes.h

    Je ne comprends pas l'erreur Si j'ai bien compris, #ifndef devrait m'éviter ce genre de pb, non ?

    merci

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Non, car tu définis des variables dans un .h, au lieu de simplement les déclarer. Donc chaque cpp qui utilise ton .h va définir TURQUOISECOLOR etc... et donc on a des définitions multiples.
    Tu peux utiliser extern, ou une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // .h
    #ifndef _CONSTDEF 
    #define _CONSTDEF 
     
    // déclaration SANS définir
    extern CBrush SKYBLUEBRUSH; 
     
    CBrush & GetTURQUOISEBRUSH();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //.cpp
     
    // déclaration ET définition
    CBrush SKYBLUEBRUSH; 
     
    CBrush & GetTURQUOISEBRUSH()
    {
        static CBrush TURQUOISEBRUSH;
        return TURQUOISEBRUSH;
    }
    idem pour les COLORREF. Mais dans leur cas tu peux rester dans le .h en utilisant une macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define SKYBLUECOLOR RGB(173,216,230)
    #define TURQUOISECOLOR RGB(0,255,255)

  3. #3
    Membre éclairé

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Par défaut
    ok merci pour la réponse

    Enfin j'aurais pensé que le préprocesseur ne passait pas dans la condition ... mais apparemment il l'évalue quand même ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant][Application web] : web.xml + includes jsp
    Par silver_dragoon dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 12/02/2004, 20h46
  2. Problème d'include sous Dev-c++ 4.9.8.0
    Par Argonz dans le forum Dev-C++
    Réponses: 16
    Dernier message: 20/11/2003, 17h36
  3. include
    Par ronald dans le forum ASP
    Réponses: 11
    Dernier message: 06/11/2003, 14h30
  4. INCLUDE non exécuté
    Par Sadneth dans le forum ASP
    Réponses: 3
    Dernier message: 07/09/2003, 00h44
  5. #include "math.h" et #include <math.h>
    Par pounka dans le forum C
    Réponses: 4
    Dernier message: 01/05/2003, 21h06

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