Ouh la, tu mélanges beaucoup de choses.
Un fichier en-tête ne contient que des définitions ; aucun code.
Et c'est un bête fichier.
En gros, tu écris l'implémentation de tes fonctions que tu veux séparer dans un fichier .c à part, puis tu écris les prototypes de ces fonctions dans un fichier en-tête .h
Dans le reste du programme où tu as besoin de ces fonctions, tu inclus le fichier .h créé, sans te soucier du reste.
Et il te suffit d'adapter la compilation, en séparant la compilation des modules pour les ajouter lors de l'étape finale à la compilation du programme principal.
Exemple : création d'une fonction machin() implémentée dans un fichier séparé
Fichier machin.c
#include <stdio.h>
#include <whatever_header_we_need.h>
void machin(int bidule)
{
/*blahblah*/
} |
Fichier machin.h
/* on "protege" ce fichier contre les inclusions multiples, pour
eviter les erreurs de compilation */
#ifndef H_MACHIN
#define H_MACHIN
/* definition de notre fonction machin, implementee dans machin.c */
void machin(int);
#endif
|
Et enfin, notre programme principal, chose.c :
#include "machin.h"
/*blahblah code fonctions trucschoses*/
machin(un_nombre_entier); |
Dernière étape, compiler machin.c sans l'option linkage pour générer un fichier machin.o, et inclure le fichier machin.o à la compilation de chose.c
Zieute la documentation de ton compilateur favori pour voir comment faire
(avec gcc c'est l'option -c pour juste créer le .o, et tu mets juste la liste de tes fichiers .o pour le linkage, genre :
gcc -c machin.c -o machin.o
gcc chose.c machin.o )
Message édité par Elmoricq le 22-09-2006 à 12:15:39