Итак, позвольте мне начать с того, что ключевое слово extern применяется к переменным C (объектам данных) и функциям C.В основном ключевое слово extern расширяет видимость переменных C и функций C.Возможно, именно поэтому он был назван как extern.
Использование extern с функциями на Си.По умолчанию перед объявлением и определением функции C «extern» .Это означает, что хотя мы не используем extern с объявлением / определением функций C, он присутствует там.Например, когда мы пишем.
int foo(int arg1, char arg2);
В начале есть внешний признак, который скрыт, и компилятор обрабатывает его, как показано ниже.
extern int foo(int arg1, char arg2);
То же самое и в определениифункции C (определение функции C означает написание тела функции).Поэтому всякий раз, когда мы определяем функцию C, в начале определения функции там присутствует extern.Поскольку объявление может быть сделано любое количество раз, а определение может быть выполнено только один раз, мы можем заметить, что объявление функции может быть добавлено в несколько файлов C / H или в один файл C / H несколько раз.Но мы замечаем фактическое определение функции только один раз (т.е. только в одном файле).И так как extern расширяет видимость всей программы, функции можно использовать (вызывать) в любом месте любого файла всей программы, если известно объявление функции.(Зная объявление функции, компилятор C знает, что определение функции существует, и он собирается скомпилировать программу).Так что это все о extern с функциями C.
Объявление может быть сделано любое количество раз, но определение только один раз.
ключевое слово «extern»используется для расширения видимости переменных / функций ().
Поскольку функции видны во всей программе по умолчанию.Использование extern не требуется в объявлении / определении функции.Его использование избыточно.
Когда extern используется с переменной, он только объявляется не определенным.
Как исключение, когда externпеременная объявляется с инициализацией, она также принимается как определение переменной.