我如何最好地保持对未使用变量的警告?

我有一个跨平台的应用程序,在我的一些函数中,并不是所有传递给函数的值都被使用。 因此,我从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
{

这很丑陋,但看起来像编译器更喜欢的方式。

或者在函数结尾处将变量赋值为零? (我讨厌它,因为它正在改变程序流程中的某些内容来消除编译器警告)。

有没有正确的方法?


你可以把它放在“ (void)var; ”表达式(不做任何事),以便编译器看到它被使用。 这在编译器之间是可移植的。

例如

void foo(int param1, int param2)
{
    (void)param2;
    bar(param1);
}

要么,

#define UNUSED(expr) do { (void)(expr); } while (0)
...

void foo(int param1, int param2)
{
    UNUSED(param2);
    bar(param1);
}

在gcc中,您可以使用__attribute__((unused))预处理器指令来实现您的目标。 例:

int foo (__attribute__((unused)) int bar) {
   return 0;
}

您目前的解决方案是最好的 - 如果您不使用它,请将参数名称注释掉。 这适用于所有编译器,因此您不必使用预处理器专门为GCC做它。

链接地址: http://www.djcxy.com/p/73613.html

上一篇: How do I best silence a warning about unused variables?

下一篇: Will a "variableName;" C++ statement be a no