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 :

Organisation des fichiers


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Par défaut Organisation des fichiers
    Bonjour,

    Si j'ai bien compris comment on organise ses fichiers, on a un fichier main qui contient le main, ensuite on a des "doubles" fichiers un .c où on retrouvera les fonctions et le .h associé qui contient les prototype.

    Par exemple :

    main.c
    fonction.c
    fonction.h

    Mais quid d'une structure ? Ou peut on la déclarer ? dans un .h ou un .c où on ne trouvera que la ou les structures (ex : structure.h ou structure.c) ou peut on les mettres dans fonction.c ou fonction.h ?

    Merci d'avance pour vos réponses.

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    .h :
    - prototype des fonctions
    - typedef
    - union/struct
    - enum

    .c :
    - contenu des fonctions.

  3. #3
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    J'ajouterai une petite chose : il est possible de définir tout ce qu'a décrit Neckara dans son .h dans un .c.
    L'intérêt à ce moment est de rendre ces déclarations "private" pour le couple .c .h concerné. Une structure déclarée dans le .c ne sera pas vu par un autre fichier .c qui inclurait le .h correspondant.

  4. #4
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Par défaut
    Merci

  5. #5
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Par défaut
    J'ai encore une question au niveau des include cette fois-ci

    Si j'ai un main.c, un fonction.c et un fonction.h :

    Je met :

    #include "fonctions_film.c" dans main.c
    et
    #include "fonctions_film.h" dans #include "fonctions_film.c"

    J'ai juste ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 119
    Par défaut
    Non, on n'inclut jamais des .c, seulement des .h.

    #include "fonctions_film.h" dans main.c et dans fonctions_film.c

    N'oublie pas les Include guard, ça devient rapidement utile quand le nombre de fichiers augmente.

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 496
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Almenor Voir le message
    #include "fonctions_film.h" dans #include "fonctions_film.c"
    Ca, c'est logique. C'est pas forcément nécessaire mais en général ça se fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "fonctions_film.c" dans main.c
    Ca, c'est moins logique. Comme l'a dit gulain, on n'inclue que des .h et jamais de .c. Techniquement, c'est possible mais c'est une pratique très rare. La raison est que si tu as par exemple :
    • main.c
    • outils.c
    • fonctions.c

    et que tu as besoin des fonctions de outils.c dans main.c et dans fonctions.c, tu dupliques le code des fonctions. En effet, ne fait que copier le contenu de outils.c à la place de cette ligne. 2 fois include "outils.c" = 2 fois le code (3 en comptant outils.c lui-même).

    Dans ton cas, fonctions_film.h doit contenir les déclarations des structures et des fonctions (prototypes) définies dans fonctions_film.c. En incluant fonctions_film.h dans main.c, la définition des fonctions (le "vrai code") de fonctions_film.c n'est pas dupliquée. Le compilateur saura ainsi dans main.c qu'il existe d'autres fonctions, non définies dans main.c, mais ailleurs. On aura alors :
    • compilation de fonctions_film.c pour produire fonctions_film.o
    • compilation de main.c pour produire main.c ; le compilateur sait qu'il existe des fonctions (celles dont le prototype est donné par l'inclusion) définies ailleurs, mais ce n'est pas important pour lui
    • édition des liens où le linker utilise le code de fonctions.o pour compléter le code de main.o pour produire l'exécutable

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

Discussions similaires

  1. ça se passe comment l'organisation des fichiers source en java
    Par razily dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 04/05/2009, 09h45
  2. Organisation des fichiers après génération
    Par mister3957 dans le forum Visual C++
    Réponses: 2
    Dernier message: 14/01/2009, 18h07
  3. [Smarty] Organisation des fichiers et inclusion
    Par Darkcristal dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 23/12/2008, 17h46
  4. [Système] Organisation des fichiers
    Par Prosis dans le forum Langage
    Réponses: 12
    Dernier message: 10/02/2008, 23h30
  5. Organisation des fichiers du programme
    Par greg13 dans le forum Linux
    Réponses: 2
    Dernier message: 16/03/2007, 15h25

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