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
Afficher la suite 

5 réponses

Messages postés
1879
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 novembre 2019
265
0
Merci
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
Commenter la réponse de Tomsuper
Messages postés
1879
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 novembre 2019
265
0
Merci
#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;
}


Commenter la réponse de Tomsuper
0
Merci
Merci pour ta réponse mais je n'ai pas tres bien compris ce que je devais mettre dans system()??
Tomsuper
Messages postés
1879
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 novembre 2019
265 -
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
Commenter la réponse de matt
0
Merci
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;
}
Tomsuper
Messages postés
1879
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 novembre 2019
265 -
As tu un nouvelle exécutable dans ton répertoire de travail ?
non j'ai tjrs le meme unique executable
Commenter la réponse de matt
Messages postés
5266
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
8 novembre 2019
817
0
Merci
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
Commenter la réponse de [Dal]