Подтвердить что ты не робот

Статическая локальная функция С++ vs global function

Какова полезность статических функций в файле?

Как они отличаются от глобальных функций в файле?

static int Square(int i)
{
   return i * i;
} 

vs

int Square(int i)
{
   return i * i;
}
4b9b3361

Ответ 1

Какова полезность статических функций в файле?

Вы можете использовать эти функции для обеспечения общей логики реализации для других функций в одном файле. Различные вспомогательные функции, специфичные для файла, являются хорошими кандидатами, которые должны быть объявлены как статические файлы.

Как они отличаются от глобальных функций в файле?

Они невидимы для компоновщика, позволяя другим единицам компиляции определять функции с одной и той же сигнатурой. Использование пространств имен в значительной степени облегчает эту проблему, но file- static выполняет функции пространств имен предшествующих, поскольку они являются функцией, унаследованной от языка программирования C.

Ответ 2

Функция A static просто означает, что компоновщик не может экспортировать функцию (т.е. сделать ее видимой для других блоков ). Это делает функцию "private" текущей единицей перевода. Это то же самое, что и перенос функции в анонимное пространство имен.

namespace {

    int Square(int i)
    {
       return i * i;
    } 

}

Как правило, использование анонимного пространства имен является предпочтительным способом С++ для достижения этого, вместо использования ключевого слова static.

Ответ 3

Статические функции видны в файле, где они были определены. Вы не можете ссылаться на них вне этого конкретного файла.

Подробнее здесь

Ответ 4

Одним словом, связь. static функции имеют внутреннюю связь, то есть они не видны за пределами их единицы перевода.