web-dev-qa-db-fra.com

Créer votre propre fichier d'en-tête en C

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.

158
Anuragdeb3

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
265
Oliver Charlesworth
#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;
}
24
Flavius

monfichier.h

#ifndef _myfile_h
#define _myfile_h

void function();

#endif

monfichier.c

#include "myfile.h"

void function() {

}
8
TommyGunn32

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;
}
5
djsumdog