Partage
  • Partager sur Facebook
  • Partager sur Twitter

programmation modulaire

    23 mars 2018 à 18:05:48

    Bonjour tout le monde, 
       Svp, j'essai de faire un simple programme en utilisant la programmation modulaire, j'ai fait une fonction qui additionne deux nombres, quand je compile j'obtient ceci: 
    C:\Users\admin\AppData\Local\Temp\cc2GM20B.o:principale.c:(.text+0x1e): undefined reference to `fonction'
    collect2.exe: error: ld returned 1 exit status

             Sachant que j'utilise un éditeur de texte et un compilateur
                                                              merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      23 mars 2018 à 18:41:50

      Il a l'air de dire qu'il ne connaît pas 'fonction'. Tu as un 'fonction' dans ton programme ? Peut-être pourrais-tu montrer celui-ci (en utilisant l'éditeur spécial du forum : </>) ?

      • Partager sur Facebook
      • Partager sur Twitter
        24 mars 2018 à 11:49:58

        /*******************************************
        //fichier main.c                                                        *
        /*******************************************/
        #include <stdio.h>  
        #include <string.h> 
        #include "coucou.h"

        int main(int argc, char const *argv[])
        {
        printf("%d\n",fonction(1,5) );
        return 0;
        }


        /****************************************************/
        //fichier coucou.h                                                                    *
        /****************************************************/
        #ifndef HEADER_INCLUDED
        #define HEADER_INCLUDED
        #include <stdio.h>  /* for printf */
        #include <stdlib.h>
        #include <string.h>

        int fonction(int a,int b);
        #endif



        /**************************************************/
        /*ficher coucou.c                                                                 *
        //*************************************************

        #include <stdio.h>
        #include <stdlib.h>
        #include "coucou.h"

        int fonction(int a,int b)
        {
        return(a+b);
        }

        -
        Edité par mathssoso 24 mars 2018 à 11:50:54

        • Partager sur Facebook
        • Partager sur Twitter
          24 mars 2018 à 15:44:07

          Ah, la fonction 'coucou' existe et a bien été déclarée... Comment compiles-tu ? Peut-être que tu ne fais pas l'édition de lien ou quelque chose comme ça ?
          • Partager sur Facebook
          • Partager sur Twitter
            24 mars 2018 à 17:24:55

            SALUT, 

                    j'ai utilisé sublime text, et je compile en utilisant l'invité de commande, j'ai oublié (tellement je n'es pas programmé modulaire depuis quelques temps) que le code pour la compilation quand il s'agit d'un programme modulaire diffère de celui d'un programme normale, généralement on fait: gcc main.c -o prog et met entrée, on  met prog.exe pour executer

            pour un programme modulaire on fait: gcc *.c -o prog

                                                           et        prog.exe

            bref, merci c'est grâce à vous, vous m'avez rappelé de ça.

                                                             MERCI BEAUCOUP

            -
            Edité par mathssoso 24 mars 2018 à 17:35:12

            • Partager sur Facebook
            • Partager sur Twitter
              24 mars 2018 à 17:55:04

              Et tu avais oublié de mettre *.c, c'est ça ? Donc ce n'était pas trop compliqué... ;)

              En tout cas retiens bien que le message d'erreur donnait une indication sur le problème : il ne connaissait pas la fonction 'fonction', il fallait juste imaginer pourquoi.

              • Partager sur Facebook
              • Partager sur Twitter
                24 mars 2018 à 18:00:46

                merci, mais j'en profite (je ne sais pas si je devrais) pour vous poser une autre question:

                      bref, quand on met char chaine[]= "une chaine de n'importe quelle longueur";

                pourquoi ça ne pose pas de problème alors que si on met : 

                                                              int i;  

                                                              scanf("%d,&i);

                                                             int tableau[i];

                 c'est dangereux à ce qu'il parait? 

                                     merci

                -
                Edité par mathssoso 24 mars 2018 à 18:07:47

                • Partager sur Facebook
                • Partager sur Twitter
                  24 mars 2018 à 18:43:24

                  Je ne vois pas trop le rapport en ton tableau de caractères et ton tableau d'entier.

                  Dangereux, dans quel sens ? Créer un tableau trop grand pour la pile, alors tu fais un test pour limiter l'allocation.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 mars 2018 à 18:59:14

                    La chaîne de caractère a une taille fixe, connue par le compilateur. Par contre le tableau d'entier a une taille variable, inconnue du compilateur (elle ne sera connue que lorsque l'utilisateur l'aura saisie), il s'agit donc d'un tableau dynamique. Dans les premiers C, déclarer un tableau dynamique de cette façon était impossible. Dans les C modernes c'est possible, mais pas tout le temps. Je ne connais pas les détails, mais il me semble qu'en effet c'est déconseillé, je ne sais plus pourquoi.

                    • 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