Мне было интересно, есть ли разница, если пропустить extern
спецификатор класса хранения при объявлении функции? В частности, есть ли разница между следующими двумя?
void foo ();
а также
extern void foo();
Мне было интересно, есть ли разница, если пропустить extern
спецификатор класса хранения при объявлении функции? В частности, есть ли разница между следующими двумя?
void foo ();
а также
extern void foo();
есть ли разница между следующими двумя?
В основном нет.
Каждое объявление функции по умолчанию равно extern
(т. Е. При отсутствии какого-либо конкретного спецификатора класса хранения).
Цитата C11
, глава §6.2.2, Связи идентификаторов
Если объявление идентификатора для функции не имеет спецификатора класса хранения, его связь определяется точно так же, как если бы оно было объявлено с помощью спецификатора класса хранения
extern
.
printf()
et al. В C ++ все по-другому; там объявлено, что функция не принимает параметров. - person Jonathan Leffler   schedule 14.07.2015extern
в объявлениях функций. Это какая-то архаичная унаследованная привычка, которая сегодня не имеет абсолютно никакой ценности. - person AnT   schedule 14.07.2015