所以我在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解释很感兴趣 .
2 回答
您链接的答案也链接到此解决方案的来源:here
该解决方案的实际来源是它仍然会产生警告并提供适当的解决方案 .
在当前警告级别,此宏似乎不适合您的编译器 .
您可以使用这个更简单的版本:
x
也不会被评估,但是被使用,因此编译器不应该抱怨x
未使用,而不是在表达式中未使用的,
运算符的左侧 .