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 :

lier deux fichiers sources


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Points : 116
    Points
    116
    Par défaut lier deux fichiers sources
    Bonjour,
    désoléde poster ici mais je pense finalement qu'il pourrai y avoir plus de réponses.
    j'aurais voulu savoir s'il était possible sous microsoft visual de diviser son fichier principal en deux fichiers.cpp liés entre eux, exemple:

    fichier principal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    define max 10
    int a;
    void main()
    {
        a=max
    }
    #
    scinder ce programme en deux fichiers:

    premier fichier.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define max 10
    int a;
    #
    deuxieme fichier.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void main ()
    {
       a=max;
    }
    #
    et d'ensuite lier ces deux fichiers.cpp pour ne pas avoir de probleme á la compilation .
    Merci

  2. #2
    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 sone47
    scinder ce programme en deux fichiers:
    premier fichier.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define max 10
    int a;
    #
    deuxieme fichier.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void main ()
    {
       a=max;
    }
    #
    Ici, on ne traite que les fichiers .c et les codes sources écrits en langage C
    Si tu veux faire du C++, c'est la porte à coté.

    En supposant que c'est du C, ce que tu veux faire est techniquement possible, mais c'est rarement utile.

    http://emmanuel-delahaye.developpez....s.htm#globales

    Si tu as crée un projet, tu mets les deux fichiers dans le projet, tu inclus les headers nécessaires comme indiqué dans mon article tu compiles et lies et ça roule...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Points : 116
    Points
    116
    Par défaut
    Je programme en C mais les extensions sont cpp d'ou ma venu ici.
    Merci pour le lien

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Points : 116
    Points
    116
    Par défaut
    Pour ma part je voudrais avoir un programme principal contenant le main et un second programme contenant la définition des fonctions appelées dans le main de facon a ne pas avoir un seul programme trop chargé.
    Cela est il possible ?
    J'ai passé l'aprés midi a chercher mais j'ai toujours des problemes de reconnaissances de variables.
    Je voudrai que mon second fichier(contenant les fonctions) sache que les variables ont été défini dans le premier ( ou alors dans un troisieme fichier ne contenant que des définitions de variables)
    Merci d'avance

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par sone47
    Je programme en C mais les extensions sont cpp d'ou ma venu ici.
    Merci pour le lien
    Tu devrais les changer en .c. En effet, même si tu programmes en C, l'extension est souvent utilisée pour le choix du compilateur. Avec une extension .cpp, il y a de grandes chances, ou plutôt de grands risques que tu compiles avec un compilateur C++. Essaie de compiler le programme suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdlib.h>
    #include <stdio.h>
     
    int main(void)
    {
        char *s_buffer = malloc(BUFSIZE * sizeof (*s_buffer));
        if (s_buffer == NULL)
        {
            fprintf(stderr, "Allocation failed!\n");
            exit(EXIT_FAILURE);
        }
        free(s_buffer);
        return EXIT_SUCCESS;
    }
    La compatibilité entre C89 et C++ est relativement bonne, mais pas 100%. Si tu veux éviter d'avoir des surprises...

    Thierry

  6. #6
    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 sone47
    Pour ma part je voudrais avoir un programme principal contenant le main et un second programme contenant la définition des fonctions appelées dans le main de facon a ne pas avoir un seul programme trop chargé.
    Cela est il possible ?
    Oui, bien sûr. C'est la programmation séparée, et c'est une Bonne Chose (si on est bien organisé, c'est à dire par entités fonctionnelles)
    J'ai passé l'aprés midi a chercher mais j'ai toujours des problemes de reconnaissances de variables.
    Je voudrai que mon second fichier(contenant les fonctions) sache que les variables ont été défini dans le premier ( ou alors dans un troisieme fichier ne contenant que des définitions de variables)
    Ca, c'est expliqué dans mon article. Par contre, c'est une très mauvaise technique qui n'est employée que quand il n'y a pas d'alternative.

    Le principe est plutôt de définir les variables dans les fonctions de haut niveau (main() est la fonction de plus haut niveau de l'application) et de passer soit une copie de la valeur, soit l'adresse des variables (structures organisant les données bienvenues) aux fonctions.

    Il est impensable de réaliser un programme sérieux avec des globales (sauf impossibilité avérée de faire autrement)

  7. #7
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par sone47
    J'ai passé l'aprés midi a chercher mais j'ai toujours des problemes de reconnaissances de variables.
    Si tu n'utilises pas de variables globales, tu n'as plus ce problème. Voici, un exemple de compilation séparée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /* module.h*/
    #ifndef H_TC_MODULE_20070109183745
    #define H_TC_MODULE_20070109183745
     
    void afficher_msg(char const *message);
     
    #endif /* guard H_TC_MODULE_20070109183745 */
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /*module.c*/
     
    #include <stdio.h>
    #include "module.h"
     
    void afficher_msg(char const *message)
    {
        printf("%s\n", message);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /* main.c */
    #include <stdlib.h>
    #include "module.c"
     
    int main(void)
    {
        afficher_message("Hello world!");
        return EXIT_SUCCESS;
    }
    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
    16
    #Makefile
    CC = gcc
    CFLAGS = -Wall -Wextra -Wwrite-strings -Wstrict-prototypes -ansi -pedantic
    SRC = main.c module.c
    OBJ = $(SRC:.c=.o)
    EXEC = test
     
    all: $(EXEC)
     
    $(EXEC): $(OBJ)
            $(CC) -o $@ $^
     
    module.o: module.h
    main.o: module.h
    %.o: %.c
            $(CC) -c -o $@ $< $(CFLAGS)
    Pour compiler, il te suffit de taper make. SI tu utilise codeblocks, pas besoin de Makefiles! Je n'ai jamais utiliser Visual C++. J'imagine que le Makefile est inutile. Il te suffit de créer un projet vide et de créer les fichiers module.h, module.c et main.c.

    Thierry

Discussions similaires

  1. lier deux fichiers excel
    Par delphine1987 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/02/2011, 14h54
  2. lier deux fichiers excel avec conditions
    Par delphine1987 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2011, 15h59
  3. Lier des fichiers sources dans plusieurs assemblies
    Par despeludo dans le forum Framework .NET
    Réponses: 2
    Dernier message: 15/12/2007, 22h41
  4. Lier deux fichiers HF dans une table
    Par SNITON dans le forum WinDev
    Réponses: 1
    Dernier message: 03/01/2006, 22h32
  5. [ANT] Lier deux fichiers buid.xml
    Par Saloucious dans le forum ANT
    Réponses: 3
    Dernier message: 19/07/2005, 15h34

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