能不能在头文件中定义全局变量?。总结起来就是,报错的原因就是有两个CPP,各自生成自己的OBJ,那么在查找符号的时候,都能发现对方那里也有一个变量a,那么就报错了。所以,如果你能保证你的头文件只被包含一次,那么可以在其中定义此外链接性的变量,如果无法保证的话,引用作者的话“”。这种方法如果写起来makefile应该也不难,历来公共的接口、头文件都是放在一起,此用于共享全局变量的头文件放在这里,正常写就好了。
PS:定义的概念,不加extern或者进行了初始化都视为定义。声明只有extern type-name a一种
文章来源: 全局变量能否放在头文件中定义――NO