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