原则上是一个cpp文件对应一个h文件
假设有a.cpp对应a.h,b.cpp对应b.h。.h文件中存在该cpp文件所有全局变量和函数的声明。
并且int main() 文件存在于a.cpp中。
其中main()要调用b文件中的函数,则在a.cpp 中声明#include ”b.h“。
对于全局变量,可以在a.cpp中定义int a = 10;
或者在a.h中声明int a;在a.cpp中定义a = 10;
在b.cpp中想要更改a的值,如a = 30;
则在b.h中添加extern int a;即可
现在全局变量不是基本类型了,比如说想要调用一个枚举类的全局变量,该怎么办呢
一种可能的解决方式为
在a.h
enum abc{a,b,c};
abc cc = a;
在a.cpp中
#include"a.h"
b同时也想修改全局变量cc
在b.cpp中
extern enum abc{a,b,c};
extern abc cc;
cc = c;
即可
但是,但是
如果在b.h中写
extern enum abc{a,b,c};
extern abc cc;
在b.cpp中
#include"b.h"
我认为编译起来是一样的,但是编译器会报错 error C2011:"abc":"enum"类型重定义
到底为什么,我没有想明白,记得问问陈宪
另外,全局变量被多个文件调用是不安全的
所以尽量少采用这种办法,
还有什么别的能够在多文件中更改同一个变量,而且安全的办法还没找到,我再想想