Statement in C ++ Makro
Reading Chromium Code, hilfreiches Makro für die Behandlung von EINTR-Fehlern bei Systemaufrufen auf POSIX-kompatiblen Systemen. Hier ist der Code (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; \
})
Die Frage ist, welche Rolle die letzte Anweisung im Makro @ spieleintr_wrapper_result;
? Wenn wir Kommas anstelle von Semikolons verwenden, ist es klar, dass das Ergebnis der letzten Operation zurückgegeben wird (Kommaoperator). Aber wozu dient das in diesem Fall?