Функції типово мають зовнішнє звʼязування, і їх можна викликати з будь-якого іншого файлу проєкту.
Докладніше про звʼязування можна прочитати в концепції звʼязування.
Функцію static можна викликати лише в межах файлу вихідного коду, де її визначено.
Наприклад
// file scope, internal linkage
// can only be called from within this file
static void some_function()
{
// code snipped
}
// file scope, external linkage by default
// can be called from any other file in the project
int main()
{
// code snipped
}
Навіть якщо функцію оголошено в заголовному файлі, але визначено як static, її не можна буде викликати ззовні її файлу вихідного коду.
Файл вихідного коду може підключити заголовний файл, викликати оголошену в ньому функцію static і скомпілюватися, але компонувальник не знайде визначення цієї функції static.
Функцію, позначену як static у файлі вихідного коду, не слід оголошувати в її заголовному файлі.