В C я не заметил никакого эффекта ключевого слова extern
, используемого перед объявлением функции.
Во-первых, я думал, что при определении extern int f();
в одном файле принудительно вы реализуете его за пределами области файла. Однако я узнал, что оба:
extern int f();
int f() {return 0;}
и
extern int f() {return 0;}
скомпилировать просто отлично, без предупреждений от gcc. Я использовал gcc -Wall -ansi
; он даже не примет комментарии //
.
Есть ли эффекты для использования extern
перед определениями функций? Или это просто необязательное ключевое слово без побочных эффектов для функций.
В последнем случае я не понимаю, почему стандартные дизайнеры решили заманить грамматику лишними ключевыми словами.
EDIT: Чтобы уточнить, я знаю, что использование для extern
в переменных, но я только спрашиваю о extern
в функциях.