在C语言中,`extern`和`static`是两个常用的关键词,但它们的用途和作用范围不同。以下是它们的主要区别:
| 特性 | extern | static |
| 作用域 | 声明外部变量或函数 | 限制变量或函数的作用域 |
| 存储类型 | 不改变存储类型 | 改变存储类型为静态 |
| 生命周期 | 与全局变量相同 | 与全局变量相同 |
| 可见性 | 允许跨文件访问 | 仅限当前文件使用 |
| 使用场景 | 引用其他文件定义的变量/函数 | 限制变量或函数的作用范围 |
简单来说,`extern`用于声明已在其他文件中定义的变量或函数,而`static`则用于限制变量或函数的作用范围,使其仅在当前文件内可见。两者在程序结构和模块化设计中都起着重要作用。