Как можно использовать ключевое слово extern перед определением функции в C?

Как мы знаем, ключевое слово extern используется для объявления переменных, функций в C ..
вроде

extern int a;

внешний интервал темп (интервал, интервал)

но что означает использование слова extern перед определением функции в C?

нравиться

extern int temp(int a,int b)
{
   printf("Hello");
}

мы также знаем, что ключевое слово extern связано с объявлением переменной, а не с определением. Итак, как можно использовать ключевое слово extern перед определением функции, поскольку память для функции выделяется, когда мы определяем функцию ... Надеюсь, вы получили мой вопрос ..

Заранее спасибо..


person Abhishek Jaiswal    schedule 21.04.2021    source источник
comment
См. эту ссылку на C и прочтите n1570   -  person Basile Starynkevitch    schedule 21.04.2021
comment
почему бы вам просто не extern объявить и оставить определение как есть?   -  person Shark    schedule 21.04.2021
comment
As we know that extern keyword is used for declaring variables, functions in C И для определения. Здесь: даже на cppreference есть extern int i2 = 3;. what is the meaning of using the word extern in front of function definition in C? Означает, что символ имеет внешнюю связь, как и для объявления. we also know that extern keyword is associated with the declaration of variable ,not definition Ну, extern связан с символом (например, имеет внешнюю связь), и определение также является декларацией.   -  person KamilCuk    schedule 21.04.2021
comment
Я могу. Но на самом деле я хочу знать настоящую причину этого вопроса. потому что в книге K&R упоминается, что ключевое слово extern можно использовать перед определением функции.   -  person Abhishek Jaiswal    schedule 21.04.2021
comment
И еще один важный факт: символы в области видимости файла по умолчанию extern. Запись в области видимости файла как int temp(); или extern int temp(); иint a = 1; или extern int a = 1; - это то же самое. Вот примеры из стандартного черновика: C11 6.9.1p13 и C11 6.9.2p4.   -  person KamilCuk    schedule 21.04.2021
comment
но когда я использую extern int a = 1; в программе c компилятор выдает ошибку. 'x' имеет как 'extern', так и инициализатор   -  person Abhishek Jaiswal    schedule 21.04.2021