Использование макроса, определенного для условного возврата значения, имеет недостаток, заключающийся в том, что он не очевиден только при просмотре клиентского кода, который может завершиться в точке макроса.
Я рассматриваю возможность написания проверки значений и ошибок, например:
#define WRITE_CHK(file, param)\
if (!write_that_returns_zero_on_fail(file, param)) {\
handle_error();\
return false;\
}
клиентский код:
bool myfunc()
{
...
WRITE_CHK(file, param) // function might return here
...
return true;
}
Мне любопытно, перевесит ли преимущества макроса (который будет использоваться во многих местах моего кода) вышеупомянутый недостаток . Есть ли предпочтительные альтернативы, кроме простого расширения (без использования макроса)?