Quelqu'un peut-il expliquer comment créer un fichier d'en-tête en C avec un exemple simple du début à la fin.
foo.h
#ifndef FOO_H_ /* Include guard */
#define FOO_H_
int foo(int x); /* An example function declaration */
#endif // FOO_H_
foo.c
#include "foo.h" /* Include the header (not strictly necessary here) */
int foo(int x) /* Function definition */
{
return x + 5;
}
main.c
#include <stdio.h>
#include "foo.h" /* Include the header here, to obtain the function declaration */
int main(void)
{
int y = foo(3); /* Use the function here */
printf("%d\n", y);
return 0;
}
à compiler avec GCC
gcc -o my_app main.c foo.c
#ifndef MY_HEADER_H
# define MY_HEADER_H
//put your function headers here
#endif
MY_HEADER_H
sert de garde à double inclusion.
Pour la déclaration de fonction, il vous suffit de définir la signature, c'est-à-dire sans nom de paramètre, comme ceci:
int foo(char*);
Si vous le souhaitez vraiment, vous pouvez également inclure l'identifiant du paramètre, mais ce n'est pas nécessaire, car l'identifiant ne sera utilisé que dans le corps d'une fonction (implémentation). Dans le cas d'un en-tête (signature de paramètre), il est manquant.
Ceci déclare la fonction foo
qui accepte un char*
et retourne un int
.
Dans votre fichier source, vous auriez:
#include "my_header.h"
int foo(char* name) {
//do stuff
return 0;
}
monfichier.h
#ifndef _myfile_h
#define _myfile_h
void function();
#endif
monfichier.c
#include "myfile.h"
void function() {
}
les fichiers d'en-tête contiennent des prototypes pour les fonctions que vous définissez dans un fichier .c ou .cpp/.cxx (selon que vous utilisez c ou c ++). Vous souhaitez placer # ifndef/# define autour de votre code .h afin que, si vous incluez le même .h à deux reprises dans différentes parties de vos programmes, les prototypes ne soient inclus qu'une seule fois.
client.h
#ifndef CLIENT_H
#define CLIENT_H
short socketConnect(char *Host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize);
#endif /** CLIENT_H */
Ensuite, vous implémenteriez le fichier .h dans un fichier .c comme ceci:
client.c
#include "client.h"
short socketConnect(char *Host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize) {
short ret = -1;
//some implementation here
return ret;
}