В чем причина определения макроса таким образом:
#define test_errno(msg) do{if (errno) {perror(msg); exit(EXIT_FAILURE);}} while(0)
Я имею в виду, в чем причина do{}while(0)
? Конечно, это будет сделано только один раз, нуль постоянен, не может как-то измениться на ненулевое, так зачем использовать такую конструкцию?