小编典典

如何最好地消除有关未使用变量的警告?

all

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

这很丑陋,但似乎是编译器更喜欢的方式。

或者我是否在函数末尾为变量分配零?(我讨厌它,因为它正在改变程序流程中的某些内容以使编译器警告静音)。

有正确的方法吗?


阅读 69

收藏
2022-04-24

共1个答案

小编典典

您可以将它放在 ” (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);
}
2022-04-24