UNUSED宏警告

所以我在SO上发现了这个宏:

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

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

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

鉴于更简单的版本,普通的void cast: #define UNUSED(x) (void)(x)是无警告的。

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

我对C语言解释感兴趣。


这个宏对于当前的警告级别的编译器来说似乎不合适。

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

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

x也不会被评估,但使用这样的编译器不应该抱怨x是未使用的,不是的左手侧,操作者是在表达未被使用。


您链接的答案也与此解决方案的来源链接在这里
该解决方案的实际来源是说它仍然会产生警告并提供适当的解决方案。

链接地址: http://www.djcxy.com/p/12777.html

上一篇: UNUSED macro warning

下一篇: Obfuscated C Code Contest 2006. Please explain sykes2.c