extern是一个非常有用的关键字。
在程序中使用一个变量之前,必须先声明它。当我们需要在多个文件里访问同一个全局变量的时候,该怎么办呢?是在每个文件里都声明一次吗?
如下:
//a.cpp
int a;
//b.cpp
int a;
//c.cpp
int a;
这样在链接的时候,会出现重复定义的错误!
另外一种情况是,把全局变量放在一个头文件里面,然后个个文件引用它。
//A.h
int a;
//a.cpp
#include "A.h"
...
//b.cpp
#include "A.h"
...
//c.cpp
#include "A.h"
...
这样的效果其实适合上面的效果一样的,在链接的时候会报重复定义的错误。
正确的做法是在一个文件里面声明,其他文件里面声明的时候,在前面加上一个extern关键字
//a.cpp
int a;
...
//b.cpp
extern int a;
...
//c.cpp
extern int a;
...
更优雅的一种做法是
//A.h
extern int a;
//a.cpp
#include "A.h"
int a;
...
//b.cpp
#include "A.h"
...
//c.cpp
#include "A.h"
...