#c #функции #static
Правильно ли я понимаю, что если функция объявлена со спецификатором static, то его не надо дублировать в определении? static void f(void); void f(void) { // ... }
Ответы
Ответ 1
Нет, не надо. Более того, даже если вы ее ниже явно объявите как extern, она все равно останется static static void f(void); extern void f(void) // Все равно функция имеет внутреннее связывание { // ... } В стандарте языка (6.2.2 Linkages of identifiers) собственно поведение объявления без явного спецификатора класса хранения (ваше void foo(void)) по определению эквивалентно ему же с спецификатором extern (как у меня) (6.2.2/5). А поведение объявления с extern в свою очередь наследуется из того, что было объявлено выше (6.2.2/4).
Комментариев нет:
Отправить комментарий