static提出在先,extern
时间: 2024-11-30 10:14:24 浏览: 2
C语言程序设计第17章在线测试.pdf
在 C 或 C++ 中,当涉及到变量的存储类别和可见性时,如果你想要声明一个可以在多个翻译单元(Translation Unit)之间共享的变量(也就是全局变量),你应该首先使用 `static` 关键字,然后使用 `extern` 关键字来声明它的存在。
例如:
```cpp
// a.cpp
static int sharedVariable; // 静态全局变量,只在当前文件中有定义
// b.cpp
extern static int sharedVariable; // 在另一个文件中声明,但未定义
int main() {
return 0;
}
// 连接时,a.cpp 的定义会被链接到主程序
```
在这里,`sharedVariable` 在 `a.cpp` 中被声明为静态全局变量,并赋予默认值0。在 `b.cpp` 中,我们仅仅用 `extern static` 声明了它的存在,实际的分配和初始化会在首次编译 `a.cpp` 时完成。
如果在没有先定义`static`的情况下就使用`extern`,编译器会找不到已存在的变量,导致编译错误。所以正确的顺序应该是先`static`后`extern`。
阅读全文