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 :

Deux codes selon un flag


Sujet :

C++

  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut Deux codes selon un flag
    Bonjour tout le monde !

    J'ai besoin de vos conseils...
    Dans le cadre d'un gros développement, je récupère du code. A partir d'un flag (un #define quoi ), je vais l'exécuter d'une façon ou d'une autre.

    La solution la plus simple envisagée est de dupliquer les fichiers, en les nommant différemment et en incluant l'un ou l'autre suivant l'état du flag.

    Ca me paraît plus que violent comment méthode...

    Comment feriez-vous ? Il y a en tout quatre fichiers de quelques 1000 lignes chacun... un tas de méthodes (pas compté, mais en gros une bonne centaine).

    Précision: c'est du C++.
    Merci d'avance !

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    euh...

    les definitions te permettent d'avoir tout dans un seul fichier et de choisir uniquement à la compilation avec l'option -D

    gc++ -DFLAG ...

    Par contre, ne PAS mette de #define..

    Mais juste un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #ifdef FLAG
       fonction1 ( ...)
    #else
       fonction1 (...)
    #endif
    ou même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fonction1 (...)
    {
    #ifdef FLAG
    ..
    #else
    ..
    #endif
    }

  3. #3
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    OK, je vais rectifier ma "prose" un tout petit peu .
    Effectivement, c'est un -D à la compilation, pas de #define (mais c'était juste pour que tout le monde comprenne la même chose par "flag").

    Ensuite, j'y ai pensé aussi, mais c'est aussi lourd de le faire comme ça à l'intérieur de chaque fonction... Je me demandais s'il existe une solution (plus élégante) à ce type de problème.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ben tout dépend de ce qu'il y a de différent et de commun entre les 2.

    Si c'est un algo dans une fonction, ou un type de comportement général, ou une API..

    Il faudrait en savoir plus...

  5. #5
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    C'est un comportement qui change suivant le flag. Toutes les méthodes sont impactées (c'est une API).

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ok.

    TOUTES les API sont modifées ?

    Peut-on relier ce changement à quelque chose de plus général (par exemple un outil graphique différent, une plateforme ?

    Si oui, tu pourrais effectivement dupliquer les fichiers (modifications faites, bien entendu), en sous-répertoires dépendant de ce paramètre plus général, avec un seul makefile, qui choisit en fonction du "Define", qui dans ce cas-là peut n'être qu'un paramètre de make...

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    interface
        /    \
    Win    Linux
    je cite ça en exemple seulement

  7. #7
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    C'est effectivement plutôt ce type de USE Case (en fait, ça permet de différencier le cas de la simulation, et le cas réel sur plateforme matérielle).

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    juste un petit mot à ce sujet : c'est en général une très mauvaise pratique d'avoir un code différent entre la simulation et le cas réel....

    Et en plus de modifer les API.


    Il manque gravement quelque chose au niveau de la conception globale....

  9. #9
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Erf, je sais bien, mais le soucis, c'est que c'est au niveau driver que cela se passe, et on ne peut pas les utiliser en simulation... C'est le problème du simulateur (et je ne peux rien y faire, malheureusement)...

Discussions similaires

  1. [langage] Deux codes en un !
    Par frees3x dans le forum Langage
    Réponses: 3
    Dernier message: 25/10/2006, 20h02
  2. Comparaison de deux tables selon leur clé primaire
    Par tomy29 dans le forum Bases de données
    Réponses: 26
    Dernier message: 28/08/2006, 13h47
  3. [Conception] Deux codes identique mais un qui fonctionne pas
    Par fabrice88 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/08/2006, 17h25
  4. Deux code html choisi selon javascript
    Par franck.automaticien dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/06/2006, 09h28
  5. Réponses: 4
    Dernier message: 17/02/2006, 15h07

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