使用定义的宏来有条件地返回一个值有一个缺点,即只看客户端代码可能会在宏的点退出.
我正在考虑的用例是写一个值和错误检查,如下所示:
#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)
我很好奇,如果宏的好处(将在我的代码中的许多地方使用)将超过上面提到的缺点.除了简单地扩展(不使用宏)之外,是否还有其他选择?
Oli*_*rth 16
标准答案是"不要使用宏"; 但这通常略显简单.在某些情况下,他们可以大大减少你本来就有的样板冗长度.
那么,为什么不将事实编码到宏名称中呢?例如WRITE_OR_RETURN_ON_FAILURE.它可能略显冗长,但它不太可能让你的代码的读者绊倒.
| 归档时间: |
|
| 查看次数: |
4721 次 |
| 最近记录: |