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