Pb compilation programation modulaire

Fermé
matt - Modifié le 29 oct. 2019 à 18:18
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 30 oct. 2019 à 08:57
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 mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 356
29 oct. 2019 à 16:59
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 mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 356
Modifié le 29 oct. 2019 à 18:18
#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
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 mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 356
29 oct. 2019 à 17:38
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
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 mardi 24 mai 2011 Statut Membre Dernière intervention 19 août 2020 356
29 oct. 2019 à 17:59
As tu un nouvelle exécutable dans ton répertoire de travail ?
0
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
30 oct. 2019 à 08:57
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