大型項目多源文件,需控制符號可見性。
[c]
// a.c
static int i; // 僅 a.c 可見
int j; // 全項目可見
static void init() {} // 僅 a.c 可見
void callme() {} // 全項目可見
void callme() {
static int sum; // 僅 callme 內可見,生命周期全程
}
[c]
// b.c
extern int j; // 引用 a.c 的 j
extern void callme(); // 引用 a.c 的 callme
int main() { callme(); }
[cpp]
// A.cpp 調用 a.c
extern "C" {
int j;
void callme();
}
int main() { callme(); }
extern "C" 告訴 C++ 編譯器用 C 鏈接規則(不修飾名),避免鏈接錯誤。
static。static 局部變量。