未使用的宏警告

UNUSED macro warning

所以我在 SO 上找到了这个 macro

#define UNUSED(x) (void)(sizeof((x), 0))

这(仍然)会产生以下警告:

main.c:11:36: warning: left-hand operand of comma expression has no effect [-Wunused-value] #define UNUSED(x) (void)(sizeof((x), 0))

而更简单的版本,正常的 void 转换:#define UNUSED(x) (void)(x) 是无警告的。

背后的原因可能是什么?一般来说,警告是高风险情况的标志。这里给定的警告真的有用吗?

我对 C 解释感兴趣。

您链接的答案也链接到此解决方案的来源:here
该解决方案的实际来源是说它仍然会产生警告并给出正确的解决方案。

在当前警告级别,此宏似乎不适合您的编译器。

您可以使用这个更简单的版本:

#define UNUSED(x) (void)(sizeof(x))

x 也不会被评估,但是 used 所以编译器不应该抱怨 x 未被使用,而不是关于左侧, 运算符未在表达式中使用。