在C语言中,extern
和static
关键字用于控制变量和函数的存储类别和可见性
-
extern
:- 用于声明一个变量或函数,表示它在其他文件中定义。
- 使用
extern
关键字的变量或函数具有外部链接性,可以在其他源文件中访问。 - 当在一个源文件中使用
extern
声明一个变量或函数时,编译器会在链接阶段查找该变量或函数的定义。 - 如果在多个源文件中使用
extern
声明同一个变量或函数,它们将共享同一个实例。
-
static
:- 用于限制变量或函数的可见性,使其仅在定义它的源文件中可见。
- 使用
static
关键字的变量或函数具有内部链接性,只能在定义它的源文件中访问。 - 当在一个源文件中使用
static
声明一个变量或函数时,它不会与其他源文件中的同名变量或函数发生冲突。 - 如果在多个源文件中使用
static
声明同名的变量或函数,它们将分别在各自的源文件中生成独立的实例。
总结:
extern
用于声明一个变量或函数,表示它在其他文件中定义,并允许在其他源文件中访问。static
用于限制变量或函数的可见性,使其仅在定义它的源文件中可见,避免命名冲突。