توابع بهطور پیشفرض پیوند خارجی دارند و میتوان از هر فایل دیگری در پروژه آنها را فراخوانی کرد.
برای اطلاعات بیشتر دربارهی پیوند، به مفهوم پیوند مراجعه کنید.
یک تابع 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 تعریف شود، از بیرون از فایل منبعِ خودش قابل فراخوانی نخواهد بود.
یک فایل منبع میتواند هدر را include کند، تابع static اعلانشده در هدر را فراخوانی کند و کامپایل شود، اما لینکر موفق به یافتن تعریف تابع static نمیشود.
تابعی که در یک فایل منبع با static علامت خورده است، نباید در فایل هدرِ خودش اعلان شود.