Заявление в макросе C ++

Читая код хрома, нашел полезный макрос для обработки EINTR с ошибками системных вызовов в POSIX-совместимых системах. Вот код (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; ? Если мы будем использовать запятые вместо точек с запятой - это будет понятно - для возврата результата последней операции (оператор запятой). Но какова цель в этом случае?

Ответы на вопрос(1)

Ваш ответ на вопрос