我有兴趣创建一个宏来消除未使用的变量警告。

此问题描述了一种通过在函数代码内编写宏来抑制未使用的参数警告的方法:

Universally compiler independent way of implementing an UNUSED macro in C/C++

但是我对可以在函数签名中使用的宏感兴趣:
void callback(int UNUSED(some_useless_stuff)) {}
这就是我使用Google(source)挖出的东西

#ifdef UNUSED
#elif defined(__GNUC__)
# define UNUSED(x) UNUSED_ ## x __attribute__((unused))
#elif defined(__LCLINT__)
# define UNUSED(x) /*@unused@*/ x
#elif defined(__cplusplus)
# define UNUSED(x)
#else
# define UNUSED(x) x
#endif

是否可以将其进一步扩展为其他编译器?

编辑:对于那些不了解标记工作原理的人:我想要一种针对C和C++的解决方案。这就是为什么这个问题同时被标记为C和C++,也就是为什么不接受仅C++的解决方案的原因。

最佳答案

我这样做的方式是这样的:

#define UNUSED(x) (void)(x)
void foo(const int i) {
    UNUSED(i);
}

在Visual Studio,Intel,gccclang中,我没有遇到任何问题。

另一个选择是仅注释掉参数:
void foo(const int /*i*/) {
  // When we need to use `i` we can just uncomment it.
}

关于c++ - 可移植的UNUSED参数宏,用于C和C++的函数签名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7090998/

10-11 18:42