首页 文章

UNUSED宏警告

提问于
浏览
1

所以我在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 回答

  • 1

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

  • 2

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

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

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

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

相关问题