Pb compilation programation modulaire

matt -  
[Dal] Messages postés 6205 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

Tomsuper Messages postés 1926 Date d'inscription   Statut Membre Dernière intervention   360
 
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
Tomsuper Messages postés 1926 Date d'inscription   Statut Membre Dernière intervention   360
 
#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
matt
 
Merci pour ta réponse mais je n'ai pas tres bien compris ce que je devais mettre dans system()??
0
Tomsuper Messages postés 1926 Date d'inscription   Statut Membre Dernière intervention   360
 
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
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
Tomsuper Messages postés 1926 Date d'inscription   Statut Membre Dernière intervention   360
 
As tu un nouvelle exécutable dans ton répertoire de travail ?
0
matt
 
non j'ai tjrs le meme unique executable
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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