c++ 多文件全局变量在链接时被重复定义
时间: 2023-07-15 20:14:37 浏览: 148
在C++中,如果你在多个源文件中定义了同名的全局变量,那么在链接阶段就会出现重复定义的错误。
为了避免这种情况,可以使用 extern 关键字来声明这个变量,将它的定义放在一个单独的源文件中。如下所示:
```cpp
// global_var.h
#ifndef GLOBAL_VAR_H
#define GLOBAL_VAR_H
extern int g_var;
#endif
// global_var.cpp
#include "global_var.h"
int g_var;
// main.cpp
#include "global_var.h"
int main()
{
g_var = 10;
// ...
return 0;
}
```
在这个例子中,我们将全局变量 g_var 的定义放在了 global_var.cpp 文件中,并在 global_var.h 文件中使用 extern 关键字来声明它。然后在 main.cpp 中,我们通过包含 global_var.h 文件来使用这个全局变量。
这样编译时,每个源文件都只会看到该全局变量的声明,并不会出现重复定义的问题。链接时则会将所有文件中的全局变量合并起来。
阅读全文