【发布时间】:2016-04-30 10:45:42
【问题描述】:
所以我在 SO 上找到了这个macro:
#define UNUSED(x) (void)(sizeof((x), 0))
这(仍然)会产生以下警告:
main.c:11:36:警告:逗号表达式的左侧操作数无效 [-Wunused-value] #define UNUSED(x) (void)(sizeof((x), 0))
而更简单的版本,普通的 void cast: #define UNUSED(x) (void)(x) 是无警告的。
这背后的原因可能是什么?一般来说,警告是高风险情况的标志。这里给定的警告真的有用吗?
我对 C 解释很感兴趣。
【问题讨论】:
-
您展示的宏,使用逗号运算符,不会导致
x在运行时被评估,而(void)(x)它是。如果x有一些副作用,那么您的宏版本就会发生这种情况。