cpp中的全局变量应该在哪里定义?

真正发现这个问题,是在写五子棋的时候,想在.h中设一个全局变量表示难度difficulty,然后在.cpp中修改difficulty,结果发现报了错。查阅后发现是重定义的问题。在.h中定义了difficulty,再在多个cpp里修改的时候,compiler就不知道用哪个了,然后就是经典的LNK2019(杀气重重

最后还是选择在h中声明,在一个制定的cpp中定义。这样避免了二义性

总之,假设工程中的多个源文件需要这个全局变量,那么,就任找一个a.h头文件,用extern去声明这个变量,然后源文件a.cpp中去定义它(注意,这个是真正定义的地方,不再需要带extern),最后在需要使用这个全局变量的源文件中include"a.h"就OK了(其他的cpp中为了程序的可读性, 最好还是加上extern声明)

例子:https://blog.csdn.net/MrZhangXX/article/details/84109902


cpp中的全局变量应该在哪里定义?
http://baokker.github.io/2022/01/18/cpp中的全局变量应该在哪里定义?/
作者
Baokker
发布于
2022年1月18日
更新于
2022年5月29日
许可协议