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 :

Problème de compilation séparée


Sujet :

C

  1. #1
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut Problème de compilation séparée
    Salut,
    je débute en programmation et j'ai voulu m'essayer a la compilation sepparer dans mon mini-projet de fin d'année , sa compile et tout marche bien le seul hic c'est que il y'a trois fichiers chez moi : main.c / fonction.c / fonction.h
    dans le main.c j'ai mis dans l'ordre : #include "fonction.c"
    #include "fonction.h"
    quand j'inverse l'ordre sa ne compile pas et sa me met des erreurs un peu
    tout dans fonction.c et fonction.h du genre :
    syntaxe error before ...
    conflicting types for ...
    previous declaration of '...' was here

    le même problème quand j'essaie d'ajouter : #include "fonction.h" dans mon fonction.c

    sinon si je garde les choses comme ce que j'ai dit avant sa marche sans problèmes sauf que je suis obliger de garder l'ordre lors des définitions de mes fonctions comme si il n'existais pas de prototypes pour ces fonctions .
    donc voila je fait appelle a votre aide pour un petit éclaircissement ,et merci .

    P.S : j'ai déjà consulter le site d'Emmanuel ainsi que la faq mais je n'arrive pas a trouver une explication.je suis sous windows et j'utilise code::blocks
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Il ne faut JAMAIS inclure de fichier .c.

    En pratique on fait comme ça

    fichier.c => fichier.h
    main.c

    main.c inclus fichier.h
    fichier.c inclus fichier.h

    Ne pas oublier de protéger son .h contre les inclusions multiples.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifndef FICHIER_H_
    #define FICHIER_H_
    [...]
    #endif
    Après tout doit se faire dans ton makefile ou à l'arrache (c'est très crade).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc *.c -o monprogramme
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ssmario2
    je débute en programmation et j'ai voulu m'essayer a la compilation sepparer dans mon mini-projet de fin d'année , sa compile et tout marche bien le seul hic c'est que il y'a trois fichiers chez moi : main.c / fonction.c / fonction.h
    dans le main.c j'ai mis dans l'ordre : #include "fonction.c"
    #include "fonction.h"
    quand j'inverse l'ordre sa ne compile pas et sa me met des erreurs un peu
    tout dans fonction.c et fonction.h du genre :
    syntaxe error before ...
    conflicting types for ...
    previous declaration of '...' was here
    <...>
    Une fois qu'on a compris le principe de la compilation séparée, il faut l'utiliser correctement :

    Dans main.c : inclure "fonction.h", par ce qu'on a besoin des prototypes de "fonction.h" pour pouvoir appeler les fonctions correctement.
    Dans "fonction.c" : inclure "fonction.h" parce qu'on a besoin de vérifier que les prototypes et la définition des fonctions sont cohérents.

    Enfin, il faut créer un projet, dans lequel on ajoute au moins les .c (avec Code::Blocks, il est aussi conseillé d'ajouter les .h).
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    merci pour vos réponses voila j'ai tester ce que vous m'avez conseiller, maintenant sa marche a merveille juste une autre petite question ,c'est aussi a la suite du déplacement des prototypes de structures vers mon fichier "fonction.h" que tout c'est régler , est ce qu'on est obliger de mettre tous les prototypes que se soit fonctions ou autre dans un fichier *.h
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  5. #5
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Ben non si tes fonctions sont static les prototypes doivent etre dans le .c sinon il faut les mettre dans le .h.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  6. #6
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    que veut tu dire par static désole je débute en programmation.
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ssmario2
    <...>juste une autre petite question ,c'est aussi a la suite du déplacement des prototypes de structures vers mon fichier "fonction.h" que tout c'est régler , est ce qu'on est obliger de mettre tous les prototypes que se soit fonctions ou autre dans un fichier *.h
    C'est le but, oui... (sauf ce qui est 'static', bien sûr, c'est à dire 'privé').
    Pas de Wi-Fi à la maison : CPL

  8. #8
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par ssmario2
    que veut tu dire par static désole je débute en programmation.
    static défini une portée.
    Une fonction static n'a une portée que dans le fichier où elle est définie.
    En gros si tu as une fonction static dans fichier.c, tu ne pourras utiliser cette fonction que dans fichier.c.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ssmario2
    que veut tu dire par static désole je débute en programmation.
    http://emmanuel-delahaye.developpez....tes.htm#static
    Pas de Wi-Fi à la maison : CPL

  10. #10
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    ouiiii merci maintenant tout devient plus claire merci beaucoup.
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

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

Discussions similaires

  1. Problème pour la compilation séparée
    Par mylha dans le forum Débuter
    Réponses: 2
    Dernier message: 29/03/2011, 16h44
  2. Problème de compilation séparée
    Par vincent.mbg dans le forum C
    Réponses: 5
    Dernier message: 14/06/2010, 10h40
  3. Problème simple de compilation séparée
    Par chrisdayton dans le forum Débuter
    Réponses: 7
    Dernier message: 03/12/2009, 07h50
  4. Problème de compilation séparée
    Par Kryptonaute dans le forum C
    Réponses: 13
    Dernier message: 16/05/2007, 11h08
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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