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

这是如此丑陋,但似乎是编译器希望的方式。

还是在函数末尾给变量赋零? (我讨厌这是因为它正在更改程序流中的某些内容以使编译器警告静音)。

有没有正确的方法?

最佳答案

您可以put it in " (void)var; " expression(不执行任何操作),以便编译器可以看到它的使用。这在编译器之间是可移植的。

例如。

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);
}

08-16 02:26