Pourquoi certaines fonctions déclarées extern et le fichier d'en-tête non inclus dans la source dans le code source de Git?

Je voulais voir le code source d'une application du monde réel pour comprendre les bonnes pratiques de programmation, etc. J'ai donc choisi de Git et de télécharger la source pour la version 1.8.4.

Après au hasard de la navigation à travers les différents fichiers quelque chose a attiré mon attention dans ces deux fichiers: strbuf.h strbuf.c

Ces deux fichiers apparemment définir une API avec cette documentation.

J'ai deux questions :

  1. Pourquoi les déclarations de fonction à la ligne 16,17,18,19 & variable globale à la ligne 6 dans 'strbuf.h' a déclaré extern ?
  2. Pourquoi "strbuf.h" n'est pas #inclus dans strbuf .c ?

J'ai comme un débutant programmeur ont toujours appris que vous écrivez des définitions de fonction dans un .c fichier alors que les déclarations de fonctions,macros,inlines etc. sont écrits dans un .h fichier qui est ensuite incluses dans chaque .fichier c qui veut utiliser ces fonctions, etc.

Quelqu'un peut-il m'expliquer pourquoi?

Jetez un oeil à talks.golang.org/2012/splash.article la section 5 pour certains problèmes de dépendances et #...

OriginalL'auteur rsjethani | 2013-08-11