前言:回顾C中extern与static的使用
场景1:静态局部变量(函数内部)
void counter( ) {
// 普通局部变量:每次函数调用都会重新初始化
int normal_var = 0;
normal_var++;
printf("normal_var = %d\n", normal_var); // 总是输出1
// 静态局部变量:只初始化一次,生命周期持续到程序结束
static int static_var = 0; // 初始化只执行一次!
static_var++;
printf("static_var = %d\n", static_var); // 每次调用递增
}
场景2:静态全局变量/函数(文件作用域)
file1.c //称为:文件名
// 普通全局变量:其他文件可见
int global_var = 100;
// 普通函数:其他文件可见
void public_func( ) ;
// 静态全局变量:只在当前文件可见
static int static_global_var = 200;
// 静态函数:只在当前文件可见(隐藏实现)
static void private_func( ) ;
// file2.c
// 声明外部变量和函数
extern int global_var; // 可以访问
extern void public_func(); // 可以调用
// extern int static_global_var; // 错误!无法访问
// extern void private_func(); // 错误!无法调用