В 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 в функциях.