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.
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.
Réponses:
foo.h
#ifndef FOO_H_ /* Include guard */
#define FOO_H_
int foo(int x); /* An example function declaration */
#endif // FOO_H_
toto.c
#include "foo.h" /* Include the header (not strictly necessary here) */
int foo(int x) /* Function definition */
{
return x + 5;
}
principal 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;
}
Pour 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 serait utilisé que dans le corps d'une fonction (implémentation), qui dans le cas d'un en-tête (signature de paramètre), il est manquant.
Ceci déclare la fonction foo
qui accepte a char*
et retourne un int
.
Dans votre fichier source, vous auriez:
#include "my_header.h"
int foo(char* name) {
//do stuff
return 0;
}
extern
déclarations de variables et fonctions dans un fichier séparé, historiquement appelé un en- tête , qui est inclus par #include
au début de chaque fichier source. Les fonctions de la bibliothèque standard, par exemple, sont déclarées dans des en-têtes comme <stdio.h>
. "
myfile.h
#ifndef _myfile_h
#define _myfile_h
void function();
#endif
monfichier.c
#include "myfile.h"
void function() {
}
void function();
comme une déclaration n'empêche pas les appels comme function(42);
. Utiliser void
dans la déclaration commevoid function(void);
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 voulez placer # ifndef / # définit autour de votre code .h de sorte que si vous incluez le même .h deux fois dans différentes parties de vos programmes, les prototypes ne sont 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 .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;
}