Pb compilation programation modulaire

matt -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Tomsuper Messages postés 1921 Date d'inscription   Statut Membre Dernière intervention   407
     
    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
  2. Tomsuper Messages postés 1921 Date d'inscription   Statut Membre Dernière intervention   407
     
    #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
  3. matt
     
    Merci pour ta réponse mais je n'ai pas tres bien compris ce que je devais mettre dans system()??
    0
    1. Tomsuper Messages postés 1921 Date d'inscription   Statut Membre Dernière intervention   407
       
      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
  4. matt
     
    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. Tomsuper Messages postés 1921 Date d'inscription   Statut Membre Dernière intervention   407
       
      As tu un nouvelle exécutable dans ton répertoire de travail ?
      0
    2. matt
       
      non j'ai tjrs le meme unique executable
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    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