阅读 chromium 代码,发现有助于处理 POSIX 兼容系统上系统调用的 EINTR errno 的宏。
这是代码(base/posix/eintr_wrapper.h):
#define HANDLE_EINTR(x) ({ \
decltype(x) eintr_wrapper_result; \
do { \
eintr_wrapper_result = (x); \
} while (eintr_wrapper_result == -1 && errno == EINTR); \
eintr_wrapper_result; \
})
问题是宏中最后一条语句的作用是什么eintr_wrapper_result;
?
如果我们使用逗号而不是分号 - 就会很清楚 - 返回最后一个操作(逗号运算符)的结果。但在这种情况下,目的是什么?
该宏使用语句表达式海湾合作委员会扩展。内部块中的最后一个表达式在执行后将用作整体的值,就像逗号运算符一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)