Comment puis-je créer des fichiers d'en-tête C
Je veux être en mesure de créer une collection de fonctions dans un fichier d'en-tête que je pouvais #inclure dans un de mes Programmes en C.
- avec un éditeur de texte?
- Si je suis correctement, ce que vous voulez est de créer une bibliothèque, similaire à la norme C bibliothèques de sorte que vous inclure un fichier d'en-tête avec des définitions de fonction, puis lier avec la bibliothèque lors de la construction de votre exécutable final. Est ce que le droit?
- Oui, vous avez raison.
Vous devez vous connecter pour publier un commentaire.
FAIT.
Exemple que ce soit.h
Note: inclure les gardes (préprocesseur commandes) ajoutée grâce à luke. Ils évitent y compris le même fichier d'en-tête deux fois dans la même compilation. Une autre possibilité (également mentionnée sur les commentaires) est à ajouter
#pragma once
mais il n'est pas garanti d'être pris en charge sur chaque compilateur.Exemple que ce soit.c
Et vous pouvez inclure l' "quoi que ce soit.h" dans n'importe quelle autre .c fichier, et faire le lien avec quoi que ce soit.c du fichier de l'objet.
Comme ceci:
de l'échantillon.c
De le compiler (si vous utilisez GCC):
De lier les fichiers pour créer un fichier exécutable:
Vous pouvez l'échantillon:
#pragma once
, qui est non-standard mais largement pris en charge, et (à mon avis) beaucoup plus simplesize_t
argument. Si vous incluez<stddef.h>
(la plus petite en-tête typedef dusize_t
), puis l'en-tête peut être inclus. Voir la NASA Goddard Space Flight Center de codage standard (en particulier, le C norme de codage).C
etheader files
. J'ai un doute. Est-il nécessaire que l'en-tête de nom de fichier et le fichier contenant la définition des prototypes ont le même nom de fichier ? Dans votre caswhatever.h
etwhatever.c
. ou est-il unstdio.h
etstdio.c
toujours ?.h
fichier? parce que nous ne sommes pas donner la moindre idée par où les fonctions sont définies.Fichiers d'en-tête peut contenir tout le code en C, car ils sont injectés dans l'unité de compilation par le pré-processeur, avant de le compiler.
Si un fichier d'en-tête contient une fonction, et est inclus par plusieurs
.c
fichiers, chaque.c
fichier obtenir une copie de cette fonction et de créer un symbole. L'éditeur de liens se plaindre au sujet de la double symboles.Il est techniquement possible de créer
static
fonctions dans un fichier d'en-tête pour l'inclusion dans plusieurs.c
fichiers. Mais ce n'est généralement pas fait, car il se décompose de la convention que le code est trouvé dans.c
fichiers et les déclarations sont trouvés dans.h
fichiers.Voir les discussions dans C/C++: Statique fonction dans le fichier d'en-tête, ça veut dire quoi? pour plus d'explication.