none
Les fichiers d'entêtes RRS feed

  • Question

  • Bonjour,

    J'ai utilise dans mon programme principal "main.c deux modules :
    - "calcul.c" et "calcul.h"
    - "traitement.c" et "traitement.h"
    Est ce que je compile les modules puis le programme principal ou bien le programme principal seulement ?
    Est ce que je lance l'exécution à partir le programme principal ?

    J'ai compilé les les modules puis le programme principal puis j'ai lancé l'exécution à partir le programme principal.
    Le programme marche bien. Mais, j'ai deux warning:

    warning C4013: 'calcul' non défini(e) ; extern retournant int pris par défaut
    warning C4013: 'traitement' non défini(e) ; extern retournant int pris par défaut

    Comment on va résoudre ceci ?

    J'ai mis dans "main.c"

    #include "calcul.h"
    #include "traitement.h"

    J'ai mis dans "calcul.c"

    #include "calcul.h"

    J'ai mis dans "traitement.c"
    #include "traitement.h"

    le programme principal "main.c" est :
    #include <stdio.h>
    #include "calcul.h"
    #include "traitement.h"
    int main ()
     {
     .... ... 
     calcul ( );
     traitement ();
     ........
     return 0 ;
     }


    le module "calcul.h" est :
    #ifndef__CALCUL_H
    #define__CALCUL_H
    
    //les prototypes des fonctions
    ...
    
    #endif
    
    

    le module "traitement.h" est :
    #ifndef__TRAITEMENT_H
    #define__TRAITEMENT_H
    
    //les prototypes des fonctions
    ...
    #endif
    
    

    le module "calcul.c" est :

    int calcul ()
    {
    .......
    .......
    
    return  0 ;
    }
    

    le module "traitement.c" est :
    int  traitement ()
    {
    .........
    ..........
    return  0;
    }
    
    


    Merci.
    • Modifié chabnasri dimanche 16 août 2009 08:28
    dimanche 16 août 2009 08:20

Toutes les réponses

  • un fichier .c, c'est pas un module, c'est une unité de compilation.

    N'oubliez pas qu'après la compilation et avant l'exécution, il y a l'édition de lien.

    un module, c'est soit un exe soit une dll ou un dérivé, et c'est une notion de runtime, pas de compilation.

    Je pense que vous n'avez qu'un module (l'exe) dans un projet Visual Studio avec trois unités de compilation (les .c).

    Les warning montrent un problème soit dans vos chemins vers les .h, soit des erreurs de typo dans ces même .h.

    Si vous utilisez VS, utilisez l'option de compilation \P pour avoir le résultat du préprocesseur avant l'étape de compilation.


    Paul Bacelar, Ex - MVP VC++
    mercredi 19 août 2009 22:06
    Modérateur
  • Bonsoir,

    Oui. J'utilise Visual Studio  2008.
    Comment j'utilise l'option de compilation \P pour avoir le résultat du préprocesseur avant l'étape de compilation ?
    mercredi 19 août 2009 23:03
  • Clic droit sur noeud "main.c" dans l'explorateur de solution.
    Clic sur l'item de menu contextuel "Propreties".
    "Configuration Properties" -> "C/C++" -> "Command Line" -> "Additional Options" -> Ajouter /P dans la textBox.

    Clic droit sur noeud "main.c" dans l'explorateur de solution.
    Clic sur l'item de menu contextuel "Compile".

    Après cela, vous trouverez un fichier "main.i" dans le même répertoire "main.c" qui contient le résultat du préprocesseur et donc l'explication des warning.
    Paul Bacelar, Ex - MVP VC++
    dimanche 23 août 2009 21:31
    Modérateur