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

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

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

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

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

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

Почему "strbuf.h" не включен в strbuf .c?

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

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

Ответы на вопрос(1)

Ваш ответ на вопрос