一、全局变量
一般最好把全局变量声明在cpp文件中(如果在.h文件中定义的话,多层包含可能会引起重复定义的错误)
cpp中定义好了之后,可以在.h文件中利用 extern关键字进行 声明(extern 声明表示在此处引入外部定义变量的声明,而不是在本编译单元中再声明一个同名的局部变量)然后其他文件要使用这些变量的时候,只要#include 这个头文件就可以了,而且不会引起重复定义的错误。
二、静态全局变量
即使用static修饰的全局变量,它不能使用extern进行引入声明,即extern与static不可以一起使用;而且static全局变量与普通全局变量有很大不同。
static修饰的全局变量声明与定义是一体的,在头文件中声明了static全局变量,同时也是定义了它。
多个编译单元都包含static全局变量所在的头文件,不会引起重定义错误,因为每个编译单元都开辟了新的空间存储它。
三、全局常量
const全局变量使用起来与普通全局变量一样,在.cpp中定义并赋初值,在.h头文件中用extern进行声明,然后再需要使用的地方包含.h即可,在多个编译单元中其内存地址也不同(这一点与static全局变量类似),但是由于是常量,不能修改其值,所以即使内存地址不一样也没影响,值都一样。