【发布时间】:2020-11-22 10:23:45
【问题描述】:
我有兴趣创建一个宏来消除未使用的变量警告。
这个问题描述了一种通过在函数代码中编写宏来抑制未使用参数警告的方法:
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++ 的解决方案。
【问题讨论】:
-
有一个更简单的方法,在 C++ 中你可以省略参数名。
-
@john 是的,在 C++ 中可以。在C中你不能。我已经修改了宏。
-
如果您对 C++ 答案不感兴趣,请不要标记您的问题 C++
-
关于未使用变量的警告是可选功能,因此禁用该警告的方法也是可选的,因此肯定有一些编译器无法做到这一点
-
@jk 我对只适用于 C++ 的答案不感兴趣。