Страницы

Поиск по вопросам

среда, 26 февраля 2020 г.

Нужно ли дублировать static в определении функции?

#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).

Комментариев нет:

Отправить комментарий