7
votes

Lorsque vous y compris un fichier d'en-tête en C, est-ce que cela inclut automatiquement le fichier .c du même nom?

J'ai regardé autour de vous en ligne aussi bien que dans mon manuel et cela me confondre.

Dites que vous avez des fonctions pour des piles dans Stack.con, et vous mettez leurs prototypes à Stack.h. Votre programme principal, disons, test.ca #include "pile.h" en haut. Voici comment tous les exemples montrent.

Donc, il inclut les prototypes, mais comment obtient-il leurs implémentations? Les fichiers d'en-tête ne semblent pas nécessiter que vous #include pile.c avec eux. Il suffit-il de rechercher tous les fichiers .c dans le même dossier et essayez de les trouver?


0 commentaires

5 Réponses :


9
votes

non; Il inclut juste l'en-tête.

Vous compilez la source séparément et connectez-le avec votre code qui l'utilise.

par exemple (code de jouet):

pile.h < / h3> xxx

pile.c xxx

test.c xxx

Compilation xxx

ou: xxx

Donc, vous compilez les fichiers source (produisant éventuellement des fichiers d'objet) et lidez-les. Souvent, le fichier stack.o serait placé dans une bibliothèque (autre que la bibliothèque C standard) et vous reliez à cette bibliothèque. C'est ce qui se passe avec la norme C Bibliothèque de fonctions également, bien sûr. Le compilateur C ajoute automatiquement la bibliothèque C (généralement -LC ) à la commande de liaison.


0 commentaires

1
votes

L'en-tête n'est requis que pour obtenir les prototypes. La mise en œuvre est compilée séparément et assemblée dans la bibliothèque finie ou exécutable par le liant .


0 commentaires

0
votes

Les fichiers d'en-tête ( *. H ) sont là simplement pour supporter le compilateur. Les fichiers source individuels sont inclus ensemble au moyen de la liaison. Tout manuel de développement C de base devrait couvrir ceci, mais il existe un «tutoriel» décent de TRES:

http://www.tenouk.com/modulew.html


0 commentaires

0
votes

vous doit compiler test.c, produisant test.o, compilez pile.compact pile.o et à un moment donné des fichiers .O pour produire un programme complet.


0 commentaires

0
votes

non. Vous devez compiler et lier des fichiers .C.


0 commentaires