在一个工程中,经常有多个全局变量被多个文件使用。
看到别人添加了一个全局变量的头文件,自己也模仿着定义了一个。但是连接时总提示重复定义。
费了好大功夫才突然想起一句话:可重复声明,不可重复定义
一般而言在头文件中只可声明,不可定义,否则当多次引用头文件时便会重复定义。
如果在头文件中只声明,那即使多次引用也仅仅是重复声明。但如果只有头文件的声明,会提示未定义。可以在任意地方定义一次,但如果工程较大这样同样可能重复定义。
更好的办法是:
写一个全局变量的声明头文件;
写一个全局变量的定义实现文件。
例如:common.h
#ifndef COMMON_EFEI
#define COMMON_EFEI
extern string me;
extern string you;
extern int numbers;
#endif
common.cpp
#include "common.h"
string me;
string you;
int numbers;
然后在其他文件中随便引用"common.h"就可以了