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 :

Architecture d'un projet : bonnes pratiques


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut Architecture d'un projet : bonnes pratiques
    Bonjour,

    J'ai un fichier library1.c qui contient des fonctions.
    Ce fichier appelle optionnellement des fonctions qui sont dans un fichier library2.c.
    J'ai un fichier libConfig.h qui contient la liste des libraries à activer, ce fichier est inclu dans mes deux fichiers .c :

    libConfig.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define LIB1_ENABLE
    #define LIB2_ENABLE
    library2.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #include "libConfig.h"
    #ifdef  LIB2_ENABLE
    #include "library2.h"
    // ... code de la library ...
    #endif
    library1.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #include "libConfig.h"
    #ifdef  LIB1_ENABLE
    #include "library1.h"
    // ... code de la library ...
    void lib1_func(void){
    // ...
    }
     
    #ifdef  LIB2_ENABLE
    #include "library2.h"
    // ... code optionnel appelant utilisant library2 ...
    #endif
     
    #endif
    library1.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #ifndef  LIB1_H
    #define LIB1_H
     
    #ifdef  LIB1_ENABLE
    // ...déclaration des fonctions/variables extern ...
    #endif
    #endif
    main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include "libConfig.h"
     
    #ifdef  LIB1_ENABLE
    #include "library1.h"
    #endif
     
     
    void main(void){
    #ifdef  LIB1_ENABLE
    lib1_func();
    #endif
    }
    Est-ce que j'utilise la bonne méthode ?
    => Je me pose la question car mon projet a pas mal de fichiers/librairies et l'IDE a du mal à gérer correctement la coloration syntaxique (du code actif est parfait grisé de manière aléatoire : en lançant une compilation ou en réouvrant le projet, des fois, ça remet le code en non grisé).
    => Par contre, ça compile correctement et le programme fonctionne comme il le devrait.
    => Peut-être que c'est seulement l'IDE qui est bugué (MPLAB-X => c'est un IDE basé sur NetBean).

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Je ne comprend pas l'intérêt, pour toi, de "libConfig.h".

    Dans chaque ".h" de tes lib, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifndef BLABLA_BLA
    #define BLABLA_BLA
    ... pleins de choses ici ...
    #endif
    Puis dans chaque ".c" qui a besoin d'une de tes lib, tu fais un "include".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut
    "libConfig.h" sert à définir les libraries/modules que je veux activer/utiliser.
    Par exemple si je veux désactiver/activer un module, il me duffit de commenter/décommenter la ligne correspondante dans "libConfig.h"
    => Vous n'utilisez pas ce genre de méthode ?

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Soit ton code utilise une lib, soit il ne l'utilise pas.
    Pour quelles raisons as-tu besoin d'activer ou désactiver une lib ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut
    J'ai un projet unique qui gère des systèmes embarqués : dans mon IDE, j'ai un profile pour chaque produit => en fonction du produit sélectionné, les #define sont activés pour activer les bonnes librairies.

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Alors tu devrais gérer les variables d'activation/désactivation des lib dans ton makefile, en spécifiant les variables au compilateur.
    C'est bien plus facile car tu ne touches pas au sources pour modifier la cible de compilation. La modification est clairement ciblée, pas besoin de fouiller dans les sources.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

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

Discussions similaires

  1. Conception d'un projet : bonnes pratiques
    Par daydream123 dans le forum Débuter
    Réponses: 0
    Dernier message: 20/01/2016, 21h58
  2. Projets informatique : les bonnes pratiques
    Par elitost dans le forum Débats sur le développement - Le Best Of
    Réponses: 345
    Dernier message: 18/10/2011, 16h08
  3. Bonne pratique pour inclure source de projet open source ?
    Par joseph_p dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 05/07/2007, 21h51
  4. [MySQL] Architecture d'un site multilingue - Bonnes pratiques ?
    Par xtd[web] dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/03/2007, 17h13
  5. Bonne pratique, configuration de projets
    Par gailuris dans le forum EDI et Outils pour Java
    Réponses: 7
    Dernier message: 15/12/2005, 10h57

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