Pb compilation programation modulaire [Fermé]

Signaler
-
Messages postés
5436
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
23 novembre 2020
-
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

Messages postés
1922
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
19 août 2020
364
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
Messages postés
1922
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
19 août 2020
364
#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;
}


Merci pour ta réponse mais je n'ai pas tres bien compris ce que je devais mettre dans system()??
Messages postés
1922
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
19 août 2020
364
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
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;
}
Messages postés
1922
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
19 août 2020
364
As tu un nouvelle exécutable dans ton répertoire de travail ?
non j'ai tjrs le meme unique executable
Messages postés
5436
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
23 novembre 2020
914
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