c++ - 使用 extern 全局变量的正确方法是什么?

标签 c++ extern

文件a.cc

int a = 0;

文件b.cc

#include "a.cc"

文件main.cc

#include "b.cc"
extern int a;

int main() {


}

g++ -c a.cc
g++ -c b.cc
g++ main.cc a.o b.o
error: multiple definitions of a

我在这里做错了什么?

最佳答案

您包含了 .cc(或 .cpp)文件,这是错误的。不要那样做。您需要一个 header ,并在其中放入 extern int a;:

// a.h
// include guards omitted
extern int a;

// a.cc
#include "a.h"

int a;

// b.cc
#include "a.h"

// main.cc
#include "a.h"

int main(){
  // use a
}

关于c++ - 使用 extern 全局变量的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6575791/

相关文章:

c++ - 围绕精明边缘的结果绘制矩形

c++ - 翻译单元如何访问另一个翻译单元的全局范围?

c++ - 尝试以相反的顺序使用 extern

c++ - 在全局变量的 header 和源中使用 "extern int x"中的 extern 关键字是否正确?

c++ - 具有外部链接的编译器的不同行为

c - 允许静态声明后跟非静态声明的基本原理,但反之则不然

c++ - 完美转发对象数组

c++ - 链接从 wxDialog 继承的类时出错

c++ - 我需要在字段的构造函数中使用互斥量吗?

c++ - 实例变量值无法正确打印