Inclure un .c ou .h

[Résolu]
Signaler
Messages postés
20
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
29 mai 2005
-
Messages postés
20
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
29 mai 2005
-
Voilà je suis entrain de faire un programme qui est assez long et donc
j'aimerais séparer mes fonctions dans differents fichiers par exemple
fichier1.c fichier2.c et main.c



et dans le main j'utilise les fonctions de chacun des fichier...

mais pour les inclure est ce qu'il faut faire #include <fichier1.c>

ou bien faire un fichier1.h et #include <fichier1.h> ???



si c'est la deuxieme solution comment je fait mon .h ???

en métant les entetes de mes fonctions du .c ??



je vous remercie...

8 réponses

Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

Je revien juste corriger une enorme faute que j'ai faite, meme si je pense que tu aurais corriger par toi-même, je prefere corriger quand même :)

/* fichier malib.h */
extern int mafonction(int);

/* fichier malib.c */
#include "malib.h"

extern int mafonction(int nombre)
{
return (nombre * nombre);
}
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,



Deuxieme solutions et tu mets les prototypes de tes differentes fonctions.

#include "fichier1.h" (il faut des guillemets).

Matt...
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
il faut compiler les .c séparement dans des .o et lier les .o avec un linker.

les .h contiendront les prototypes des fcts et les .c le code.
les .c devront inclurent les .h contenant les prototypes des fcts utilisées.
Messages postés
20
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
29 mai 2005

et comment je pourrai faire pour lier les .o???

c'est au niveau de la compilation non?
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Tu developpes avec quoi et sous quel environnement ???

Matt...
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
17
sous la plupart des ide c automatique : il suffit en general de cree un projet

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

Pour rendre les fonction d'un .c utilisable dans d'autre fichier il faut les rendre "extern"

/* fichier main.c */
#include "malib.h"

int main(int argc, char *argv[])
{
return fonction(10);
}

/* fichier malib.h */
extern mafonction(int);

/* fichier malib.c */
#include "malib.h"

extern mafonction(int nombre)
{
return (nombre * nombre);
}

Le #include "malib.h" dans le fichier "malib.c" n'est necessaire que si les fonctions qu'il contient peuvent appeler d'autres fonction qui sont elles aussi contenus par ce fichier.
Faire un .h n'est pas obligatoire dans le sens ou tu peux copier directement les prototypes aux dessus de ton main(), cependant il est conseiller de mettre tout ce qui est #define, class, struct, typedef, prototypes, ..., dans des .h puis de les inclure tout simplement pour des raison de lisibilitées du code.
Messages postés
20
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
29 mai 2005

ok je te remercie !!!

je connaissai pas "extern" !!!