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 :

Ne pas compiler certains bouts de code


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut Ne pas compiler certains bouts de code
    Bonjour.
    Désolé pour le titre pourri, mais franchement je vois difficilement comment résumer ça.

    Je m'explique :
    Sous VC++2007, j'ai deux projet dans ma solution (ils compilent donc en même temps) qui ont des fichiers de classes en commun. Je voudrais que certaines méthodes de ces classes soient compilées par un projet mais pas par l'autre.

    Donc en gros, voici ce que je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Fichier mainApp.h, appartenant uniquement au projet 1
    ...
    #define IS_MAIN_APPLICATION
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Fichier maclasse.h
     
    classe Maclasse{
    public:
        void methode_en_commun();
     
        #ifdef IS_MAIN_APPLICATION
        void methode_que_seul_projet1_devrait_posseder();
        #endif
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Fichier maclasse.cpp
    #include maclase.h
     
    void Maclasse::methode_en_commun(){...}
     
    #ifdef IS_MAIN_APPLICATION
    void Maclasse::methode_que_seul_projet1_devrait_posseder(){...}
    #endif
    Le projet 2 ne compilant pas le fichier mainApp.h, pour lui tout se passe bien.
    Par contre, le projet 1 compile la déclaration de methode_que_seul_projet1_devrait_posseder() dans maclasse.h, mais il saute l'implémentation de cette fonction dans maclasse.cpp
    => Du coup ça me fait une erreur de link (lnk 2019).

    Vous avez une idée ?
    Merci d'avance.

    Martin

  2. #2
    Membre éclairé Avatar de fdubks
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 73
    Par défaut
    essaie sans mettre d'espace avant ton #.
    y a des compilo qui n'aime pas .

  3. #3
    Membre éclairé Avatar de fdubks
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 73
    Par défaut
    Erreur de ma part, je viens d'essayer avec visual, y a pas de soucis avec les espace avant # désolé.

    Sinon, ton MainApp.h il est inclus ou ?

  4. #4
    Membre éclairé Avatar de fdubks
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 73
    Par défaut
    Désolé, j'ai écris n'importe quoi.
    Soucis avec mon clavier
    Je reprends:
    As tu essayé de définir ta directive avec les propriétés de ton projet dans visual et non dans un fichier include avec #define.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut
    Citation Envoyé par fdubks
    As tu essayé de définir ta directive avec les propriétés de ton projet dans visual et non dans un fichier include avec #define.
    Ahh en voilà une bonne idée ! Je le sens bien ça.
    Le seul soucis, c'est que je ne savais même pas qu'on pouvait définir des directives dans les propriétés d'un projet, et j'ai beau chercher dans la fenêtre Propriétés, je ne trouve pas où ni comment le faire

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Propriétés du projet -> C/C++ -> Preprocessor -> Preprocessor definitions

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

Discussions similaires

  1. Compilation Conditionnelle (ne pas inclure certaines DLL)
    Par sk8world dans le forum Windows Mobile
    Réponses: 3
    Dernier message: 16/01/2008, 16h16
  2. [MySQL] La page ne s'affiche pas avec ce bout de code
    Par mimagyc dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/08/2007, 23h56
  3. Réponses: 2
    Dernier message: 18/05/2007, 12h34
  4. Réponses: 23
    Dernier message: 26/04/2006, 19h58

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