Какова полезность статических функций в файле?
Как они отличаются от глобальных функций в файле?
static int Square(int i)
{
return i * i;
}
vs
int Square(int i)
{
return i * i;
}
Какова полезность статических функций в файле?
Как они отличаются от глобальных функций в файле?
static int Square(int i)
{
return i * i;
}
vs
int Square(int i)
{
return i * i;
}
Какова полезность статических функций в файле?
Вы можете использовать эти функции для обеспечения общей логики реализации для других функций в одном файле. Различные вспомогательные функции, специфичные для файла, являются хорошими кандидатами, которые должны быть объявлены как статические файлы.
Как они отличаются от глобальных функций в файле?
Они невидимы для компоновщика, позволяя другим единицам компиляции определять функции с одной и той же сигнатурой. Использование пространств имен в значительной степени облегчает эту проблему, но file- static
выполняет функции пространств имен предшествующих, поскольку они являются функцией, унаследованной от языка программирования C.
Функция A static
просто означает, что компоновщик не может экспортировать функцию (т.е. сделать ее видимой для других блоков ). Это делает функцию "private" текущей единицей перевода. Это то же самое, что и перенос функции в анонимное пространство имен.
namespace {
int Square(int i)
{
return i * i;
}
}
Как правило, использование анонимного пространства имен является предпочтительным способом С++ для достижения этого, вместо использования ключевого слова static
.
Статические функции видны в файле, где они были определены. Вы не можете ссылаться на них вне этого конкретного файла.
Одним словом, связь. static
функции имеют внутреннюю связь, то есть они не видны за пределами их единицы перевода.