我如何最好地保持对未使用变量的警告?
我有一个跨平台的应用程序,在我的一些函数中,并不是所有传递给函数的值都被使用。 因此,我从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?