阅读铬代码,找到了有用的宏来处理POSIX兼容系统上系统调用的EINTR错误。 这是代码(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;
中的作用是什么?
如果我们使用逗号而不是分号 - 很明显 - 返回上一个操作的结果(逗号运算符)。但是这个案子的目的是什么?