【发布时间】:2010-12-01 23:53:38
【问题描述】:
我有一个跨平台应用程序,在我的一些函数中,并非所有传递给函数的值都被使用。因此,我收到来自 GCC 的警告,告诉我有未使用的变量。
围绕警告进行编码的最佳方式是什么?
函数周围的#ifdef?
#ifdef _MSC_VER
void ProcessOps::sendToExternalApp(QString sAppName, QString sImagePath, qreal qrLeft, qreal qrTop, qreal qrWidth, qreal qrHeight)
#else
void ProcessOps::sendToExternalApp(QString sAppName, QString sImagePath, qreal /*qrLeft*/, qreal /*qrTop*/, qreal /*qrWidth*/, qreal /*qrHeight*/)
#endif
{
这太丑了,但似乎是编译器更喜欢的方式。
还是在函数末尾给变量赋值为零? (我讨厌它,因为它改变了程序流程中的某些内容以使编译器警告静音)。
有正确的方法吗?
【问题讨论】:
-
我刚刚意识到你在去年 11 月问了一个类似的问题。这就是为什么它看起来很熟悉! ;) stackoverflow.com/questions/308277/…
-
为什么不对两个编译器都注释掉呢?如果 arg 在一个上未使用,则它可能在另一个上未使用...
-
你应该知道Qt有一个
Q_UNUSED宏就是为了这个。在文档中查看。 -
C 解决方案在 C++ 中也可以正常工作:stackoverflow.com/a/3599170/1904815
-
-Wno-unused-parameter 也可能是一个选项,如果你可以有编译器特定的构建标志
标签: c++ gcc warnings gcc-warning