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

  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
    0
    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;
      }


      0
      1. Merci pour ta réponse mais je n'ai pas tres bien compris ce que je devais mettre dans system()??
        0
        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
          0
      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;
        }
        
        0
        1. As tu un nouvelle exécutable dans ton répertoire de travail ?
          0
        2. non j'ai tjrs le meme unique executable
          0
      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
        0