使用定义的宏来有条件地返回一个值有一个缺点,即只看客户端代码可能会在宏的点退出.
我正在考虑的用例是写一个值和错误检查,如下所示:
#define WRITE_CHK(file, param)\
if (!write_that_returns_zero_on_fail(file, param)) {\
handle_error();\
return false;\
}
Run Code Online (Sandbox Code Playgroud)
客户代码:
bool myfunc()
{
...
WRITE_CHK(file, param) // function might return here
...
return true;
}
Run Code Online (Sandbox Code Playgroud)
我很好奇,如果宏的好处(将在我的代码中的许多地方使用)将超过上面提到的缺点.除了简单地扩展(不使用宏)之外,是否还有其他选择?