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)文件,这是错误的.不要那样做.您需要一个标头,然后将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 变量


下一篇:c – 为什么一些引用某些导出的const变量的const变量的值为0?