Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programmation modulaire

    15 juillet 2018 à 17:56:22

    Bonjour, pour le moment, je revois les bases du cours "Apprenez à programmer en C !" avant de commencer la conception du pendu.
    Seulement j'ai remarqué que lorsque je place mes fonctions dans "fonction.c", elles ne sont pas prises en compte dans mon fichier "main.c" alors que j'ai inclus fonction.h.
    La seule manière de résoudre le souci c'est d'inclure mon fichier "fonction.c" dans "main.c" seulement je n'ai vu nulle part dans le cours que l'ont devais inclure autre chose que les .h 
    En espérant avoir été clair, merci.
    • Partager sur Facebook
    • Partager sur Twitter
      15 juillet 2018 à 18:21:09

      Salut,

      Montre le code. On ne doit en effet pas inclure de .c. Que veux-tu dire par ils ne sont pas pris en compte ?

      • Partager sur Facebook
      • Partager sur Twitter
      Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
        15 juillet 2018 à 18:26:41

        Mon fichier Main.c

        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
        #include "fonction.h"
        
        #define RLINE printf("\n");
        #define nMax 100
        #define nMin 1
        
        
        int main()
        {
        const int MAX = nMax, MIN = nMin;
        int nombreMystere=0;
        srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        
        
        RLINE // c'est un retour à la ligne
        
        MenuJoueur();
        
        RLINE
            return 0;
        }
        
        

        Mon fichier fonction.c

         #define RLINE printf("\n");
        #define TAB printf("\t");
        
        void MenuJoueur()
        {
            TAB
            printf("Jeu : C'est Plus, C'est Moins !");
            RLINE
            TAB
            printf("-------------------------------");
        
        
        }
        
        void MenuNiveaux()
        {
            TAB
            printf("Jeu : C'est Plus, C'est Moins !");
            RLINE
            TAB
            printf("-------------------------------");
        
        
        }
        
        Mon fichier fonction.h 
        void MenuJoueur();
        void MenuNiveaux();
        Code erreur

        -
        Edité par Cybevil 15 juillet 2018 à 18:30:26

        • Partager sur Facebook
        • Partager sur Twitter
          15 juillet 2018 à 18:42:10

          Quand tu as créé ton fichier fonction.c, as-tu coché les cases DEBUG et RELEASE (pour indiquer à Code::Blocks qu'il faudra qu'il dise au compilateur de compiler le fichier quand on compile en debug/release). Tu peux vérifier ça en regardant les propriétés du fichier (clic droit sur le fichier dans Code::Block et je crois qu'il y a une fenêtre Build).

          • Partager sur Facebook
          • Partager sur Twitter
          Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
            15 juillet 2018 à 18:47:32

            Houraa, je ne les avais effectivement pas cochées.

            Moi qui cherche dans le cours depuis plusieurs jours ce que j'avais bien pu louper, je suis contant que ce ne sois que ça, un grand merci !

            • Partager sur Facebook
            • Partager sur Twitter
              15 juillet 2018 à 18:48:35

              Super, bonne continuation !

              • Partager sur Facebook
              • Partager sur Twitter
              Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                15 juillet 2018 à 18:49:52

                Merci, juste une dernière question, ces deux cases servent à quoi du coup ? inclure tout les fichiers lors de la compilation ?
                • Partager sur Facebook
                • Partager sur Twitter
                  15 juillet 2018 à 19:00:41

                  Si on explique la compilation grossièrement.

                  • préprocesseur tout ça.
                  • Les fichiers .c sont compilés pour former des fichiers objets. Pour ça, on n'a pas besoin du code de chaque fonction. Par exemple, quand on crée le fichier objet pour main.c, on sait qu'il y a une fonction MenuJoueur quelque part, et qu'on devra l'appeler dans le programme final.
                  • L'éditeur de liens lie les fichiers objets ensemble pour obtenir le fichier final. Là, on a en gros besoin de savoir où sont toutes les fonctions qu'on appelle. C'est ici que tu obtiens ton erreur.

                  En cochant la case Debug, on dit à Code::Blocks de compiler le fichier quand on est en mode Debug (donc de créer le fichier objet et de le lier ensuite). Pour la case Release, c'est pour le mode Release.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                    15 juillet 2018 à 20:09:24

                    D'accord, merci beaucoup.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Programmation modulaire

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown