我的代码中有几个循环,所有循环都检查条件是否为真。
for(int i = 0; i < size; i++) {
if (check_conditition(array[i]))
break;
// do something
}
所以我想将其包装在宏上,这样我就不必在所有宏上都包含 check_conditition()
,例如:
for_each_item(i, array) {
// do something
}
我该怎么做?或者有更好的选择吗?
最佳答案
要在宏中包含 check_condition
,您可以将其添加到 for
循环条件中:
#define for_each_item(idx, array) for (int idx=0; \
(idx<size) && !check_condition(array[idx]); \
idx++)
现在您可以按照您的要求使用宏:
for_each_item(i, array)
{
// do something
}
附注您可以将 size
替换为 sizeof(array)/sizeof(array[0])
:
#define for_each_item(idx, array) for (int idx=0; \
(idx<(sizeof(array)/sizeof(array[0]))) && \
!check_condition(array[idx]); \
idx++)
关于c - C 中带有 break 或 continue 语句的 foreach 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35381932/