在Qt编程中,有时候会遇到 multiple definition错误,该错误的提示十分直白,就是变量出现重定义了,网上关于这类问题有几个排查点:
1.排查是否存在头文件重复包含情况
2..pro文件的
SOURCES和HEADERS是否有重复情况
3.排查变量是否有多个引用情况
有的时候排查过这些发现没有上述情况,那很可能是在头文件中,尤其是多个cpp文件引用的头文件中定义了普通的全局变量,而非const常量或者extern 修饰的变量
注意,C++中,变量可以多次声明,但只能有一次定义,在头文件中的变量被多个cpp文件使用时,是一种声明共享的使用,所以在头文件中声明变量时,可以添加extern关键字,表示该变量的声明,而非定义。
如:int a -----> extern int a
函数同理,在头文件中定义的函数,可以使用inline进行修饰,因为内联函数不需要链接,所以不会出现重定义错误。