Pb compilation programation modulaire

Bonjour, j 'aimerai trouver un moyen de compiler la fonction hello juste après sa création dans un fichier .c par fprintf
Mais en gros voici mon code et code blocks m affiche "undefined reference to hello()", la fonction hello ne semble ne pas s'être compilé avec le reste

Aidez moi svp

#include <stdio.h>
#include <stdlib.h>
#include "entete1.h"
 
int main()
{
 
FILE* fichier2 = NULL;
 
fichier2 = fopen("fonction1.c", "a");
 
if(fichier2 != NULL)
{
 
  fprintf(fichier2, "void hello()\n{\nprintf(\"Hello there\");\n}"); //Ecriture de la fonction dans .c pour l'utiliser par la suite
 
  fclose(fichier2);
}
else
{
    printf("Impossible d'ouvrir le fichier fonction1.c");
}
 
hello();
return 0;
}


Configuration: Windows / Edge 18.18362

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    Peut tu tester la fonction system("commande") que tu met just avant l'appel à hello() ?

    exemple : system("gcc ton_fichier_avec_ton_main ton_fichier_avec_ton_Hello") je pense peut être à tord que tu utilise gcc pour compiler.

    avant ça, je te conseil de mettre apres tes include de tes .h, le prototype de ta fonction hello() soit :
    void hello();

    tiens moi au jus
    1. #include <stdio.h>
      #include <stdlib.h>
      #include "entete1.h"
      
      <bold>void hello();</bold>
      
      int main()
      {
      
      FILE* fichier2 = NULL;
      
      fichier2 = fopen("fonction1.c", "a");
      
      if(fichier2 != NULL)
      {
      
      fprintf(fichier2, "void hello()\n{\nprintf(\"Hello there\");\n}"); //Ecriture de la fonction dans .c pour l'utiliser par la suite
      
      fclose(fichier2);
      }
      else
      {
      printf("Impossible d'ouvrir le fichier fonction1.c");
      }
      
      <bold>system("gcc ton_fichier_avec_ton_main ton_fichier_avec_ton_Hello");</bold>
      
      hello();
      return 0;
      }


      1. Merci pour ta réponse mais je n'ai pas tres bien compris ce que je devais mettre dans system()??
        1. mettre entre " " gcc (ton compilateur) suivis des fichiesr que tu veux compiler, sois le ficher que tu as creer ton main() et ton ficher creer avec ton fprintf sois fonction1.c
      2. J'ai bien fait comme tu m'a dit mais malheureusement je garde la même erreur :
        "undefined reference to 'hello' " avec ce code
        #include <stdio.h>
        #include <stdlib.h>
        #include "entete1.h"
        void hello();
        int main()
        {
        
        FILE* fichier2 = NULL;
        
        fichier2 = fopen("fonction1.c", "a");
        
        if(fichier2 != NULL)
        {
        
          fprintf(fichier2, "void hello()\n{\nprintf(\"Hello there\");\n}");
        
          fclose(fichier2);
        }
        else
        {
            printf("Impossible d'ouvrir le fichier entete1.h");
        }
        system("gcc main.c fonction1.c");
        hello();
        return 0;
        }
        
        1. As tu un nouvelle exécutable dans ton répertoire de travail ?
        2. non j'ai tjrs le meme unique executable
      3. Contributeur
        Salut matt,

        Ton fichier ne sera créé qu'à l'exécution et non à la compilation du programme.

        Or, tu as besoin de ce fichier au stade de la compilation.

        Tu ne peux donc pas compiler ton programme.

        Dal