UNUSED宏警告

时间:2016-01-23 23:38:35

标签: c macros warnings

所以我在SO上发现了这个macro

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

并且(仍然)产生以下警告:

  

main.c:11:36:警告:逗号表达式的左侧操作数无效[-Wunused-value]       #define UNUSED(x)(void)(sizeof((x),0))

虽然更简单的版本,普通void演员:#define UNUSED(x) (void)(x)无警告。

背后的原因是什么?一般而言,警告是高风险情况的表现。这里给出的警告真有用吗?

我对C-explanation感兴趣。

2 个答案:

答案 0 :(得分:2)

您链接的答案也链接到此解决方案的来源:here
该解决方案的实际来源是它仍然会产生警告并提供适当的解决方案。

答案 1 :(得分:1)

这个宏似乎不适合您当前警告级别的编译器。

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

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

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