Créer sa directive .h

Créer sa directive .h - C - Programmation

Marsh Posté le 22-09-2006 à 11:59:15    

Bonjour,
 
voilà j'aimerais créer ma propre fonction, il me faut donc un fichier .h pour pouvoir utiliser ma fonction
 
le soucis est que je n'y connais pas grand chose
 
j'imagine qu'il va me falloir un header pour pouvoir faire un #include<exhortae.h>, puis appeler ma fonction
 
j'ai cherché sur le net mais je trouve pas de doc
 
quelqu'un aurait t'il un lien qui expliquerait le processus pour aller d'une fonction crée par soit à l'utilisation dans un programme de cette fontion avec utilisationde la directive de compilation
 
Merci

Reply

Marsh Posté le 22-09-2006 à 11:59:15   

Reply

Marsh Posté le 22-09-2006 à 12:07:21    

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
Reply

Marsh Posté le 22-09-2006 à 13:00:11    

exhortae a écrit :


voilà j'aimerais créer ma propre fonction, il me faut donc un fichier .h pour pouvoir utiliser ma fonction
 
le soucis est que je n'y connais pas grand chose


http://mapage.noos.fr/emdel/codage.htm
 
Pose des questions si tu ne comprends pas. Ensuite, poste ton code, qu'on vérifie si tu as bien compris...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 22-09-2006 à 20:29:39    

Merci pour les réponses. Donc voilà mon programme, il tourne les questions viendront à la suite :)
 
fichier d'implémentation clrscr.c
 

Code :
  1. #include "clrscr.h"
  2. #include <stdio.h>
  3. void clrscr (void)
  4. {
  5. int i;
  6. for ( i = 1; i <= 25; i++)
  7.  printf("\n" );
  8. }


 
 
 
fichier d'interface
 

Code :
  1. #ifndef H_CLRSCR
  2. #define H_CLRSCR
  3. void clrscr (void);
  4. #endif


 
 

Code :
  1. #include "clrscr.h"
  2. #include <curses.h>
  3. #include <stdio.h>
  4. int main (void)
  5. {
  6. printf("Bonjour" );
  7. getchar();
  8. clrscr();
  9. puts("Bonsoir" );
  10. return 0;
  11. }

Message cité 1 fois
Message édité par exhortae le 23-09-2006 à 11:07:53
Reply

Marsh Posté le 22-09-2006 à 20:33:26    

Voilà les questions que je me pose :
 
1) pkoi on met #include "clrscr.h" au lieu de #include<clrscr.h>
 
2) dans #ifndef H_CLRSCR le CLRSCR correspond à quoi, à la fonction clrscr ou au nom du fichier d'implémentation.
 
C'est tout pour l'instant, j'en aurais une autre, mais jvais chercher google voir si je peux la résoudre moi même
 
encore merci de prendre le temps de m'aider

Message cité 1 fois
Message édité par exhortae le 22-09-2006 à 20:33:45
Reply

Marsh Posté le 22-09-2006 à 23:55:49    

exhortae a écrit :

Merci pour les réponses. Donc voilà mon programme, il tourne


Presque bon. Il manque un <stdio.h> dans le main.c.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-09-2006 à 00:00:34    

exhortae a écrit :

Voilà les questions que je me pose :
 
1) pkoi on met #include "clrscr.h" au lieu de #include<clrscr.h>


Parce que les <> sont réservés pour les headers standards.
 
Par convention, les <> conviennent aussi aux extensions des compilateurs (<conio.h>, <ncurses.h> etc.) et parfois aux headers des bibliothèques tierces (<sdl/sdl.h> etc.). Les "" sont plutôt attribués aux headers de l'application.

Citation :


2) dans #ifndef H_CLRSCR le CLRSCR correspond à quoi, à la fonction clrscr ou au nom du fichier d'implémentation.


Au nom du fichier (c'est une convention communément admise).

Message cité 1 fois
Message édité par Emmanuel Delahaye le 23-09-2006 à 00:02:14

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-09-2006 à 11:07:25    

Emmanuel Delahaye a écrit :

Parce que les <> sont réservés pour les headers standards.
 
Par convention, les <> conviennent aussi aux extensions des compilateurs (<conio.h>, <ncurses.h> etc.) et parfois aux headers des bibliothèques tierces (<sdl/sdl.h> etc.). Les "" sont plutôt attribués aux headers de l'application.

Citation :


2) dans #ifndef H_CLRSCR le CLRSCR correspond à quoi, à la fonction clrscr ou au nom du fichier d'implémentation.


Au nom du fichier (c'est une convention communément admise).


 
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed