本菜鸟在使用qt的过程中遇到了main.cpp和mainwindow.cpp需要调用同一参数的情况。起初在mainwindow.h中加入定义,在两个源文件中分别包含此头文件,点击运行,然后就出现了LINK2005的报错。
百度后发现是重定义的问题。
解决方法:
在mainwindow.cpp中参数定义,如 类型 名;(可直接赋值)
在mainwindow.h中参数声明,如extern 类型 名;(不要在这赋值)
在main.cpp中加入头文件,便可使调用此参数。
使用static也可解决报错问题,但是源函数间调用时参数地址不同,在有些时候会有影响。比如指针。
static 和 extern 的区别请看:
https://blog.csdn.net/qq_35524916/article/details/68953942
据说在头文件中加入
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#endif
或
#pragma once也可以解决此报错问题。我试了下没能成功。