QT SDK与C4100编译告警
“warning C4100: … unreferenced formal parameter.”
QT SDK (VC2008)在使用qmake生成makefile文件时,缺省会打开C4100的编译告警开关。就我们的开发实践来说,C4100实在是个多余的告警,尤其是在C++程序中,我们经常定义一些虚函数等作为接口类,这些虚函数本身基本是空函数,由派生类重载出具体的实现。一旦放开C4100告警,VC编译器就看这些函数中没有引用的形参非常不爽,频频给出告警,实在是烦人。
我们可以在头文件中要求编译器忽略C4100告警:
#pragma warning( push )
#pragma warning( disable : 4100 )
void fun1(…){}
#pragma warning( pop )
这样做也有不好的一面,我们不得不修改.h文件,包括一些第三方库的头文件。另外,这似乎也破坏了跨平台的特性,和VC编译器绑定过紧(?不清楚其他编译器,例如gcc,是否也支持这种预处理指令)。
我们决定直接关掉C4100告警,修改以下文件(qt安装在d:\qt\4.6.2目录):
D:\Qt\4.6.2\mkspecs\win32-msvc2008\qmake.conf
在这个文件中,找到QMAKE_CXXFLAGS_WARN_ON,将它后面的-w34100删除掉。
然后回到自己的工程,重新用qmake生成makefile,此时再编译,就不会有C4100告警了。