有时候我们会在头文件当中定义一些全局变量或者全局函数,这种做法会比较方便,但有时候会出现“编译错误"error LNK2005: 已经在 XXX.obj 中定义的问题"的链接问题。今天出现了此问题,研究了半天,也没搞明白到底是什么原理。只知道如果定义了公共函数的头文件件被其它头文件或者源文件多于一次的引用(无论直接还是间接被引用),就会出现此问题。
解决此问题的方法是:知识有限,只找到了一种办法,不知道还有没有其它更好的办法。将头文件当中的公共函数定义为静态函数。
总结:如非十分必要,不要在头文件定义全局变量或者全局函数,实在要如此做的,将变量或者函数为静态的。