Почему некоторые функции объявлены extern и заголовочный файл не включен в исходный код Git?

Я хотел увидеть исходный код реального приложения, чтобы понять хорошие практики программирования и т. Д. Поэтому я выбрал Git и загрузил исходный код для версии 1.8.4.

После случайного просмотра различных файлов что-то привлекло мое внимание в этих двух файлах: strbuf.h strbuf.c

Эти два файла, очевидно, определяют API с эта документация .

У меня два вопроса:

  1. Почему объявления функций в строке 16, 17, 18, 19 и глобальная переменная в строке 6 в strbuf.h объявлены extern?

  2. Почему «strbuf.h» не включен в # strbuf .c?

Я, как начинающий программист, всегда знал, что вы пишете определения функций в файле .c, тогда как объявления функций, макросы, встроенные символы и т. д. записываются в файл .h, который затем включается в # .c каждый файл, который хочет использовать эти функции и т. д.

Может кто-нибудь объяснить это?

8
задан durron597 25 July 2015 в 17:52
поделиться