В общем, следует избегать использования внешнего определения. Они легко приводят к неуправляемому коду и ошибкам, которые трудно обнаружить. Конечно, есть примеры, когда другие решения были бы непрактичными, но они редки. Например, stdin и stdout - это макросы, которые отображаются в переменную внешнего массива типа FILE * в stdin.h; пространство памяти для этого массива находится в стандартном модуле C-библиотеки.

ажется, что даже если я ссылаюсь на функцию в другом файле без объявления extern, gcc все равно может скомпилировать этот модуль. Поэтому мне интересно, нужно ли где-нибудь объявление extern для функции? Я знаю, что вам нужен extern для переменных.

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

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