Является ли плохой практикой, чтобы определение макроса возвращало значение для функции?

Использование макроса, определенного для условного возврата значения, имеет недостаток, заключающийся в том, что он не очевиден только при просмотре клиентского кода, который может завершиться в точке макроса.

Я рассматриваю возможность написания проверки значений и ошибок, например:

#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;
}

Мне любопытно, перевесит ли преимущества макроса (который будет использоваться во многих местах моего кода) вышеупомянутый недостаток . Есть ли предпочтительные альтернативы, кроме простого расширения (без использования макроса)?

6
задан Foo Bah 9 August 2011 в 23:42
поделиться