c - C 中带有 break 或 continue 语句的 foreach 宏

标签 c for-loop macros function-pointers

我的代码中有几个循环,所有循环都检查条件是否为真。

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/

相关文章:

c - Pcap 打开接口(interface)并注入(inject)数据包

c - 如何让 gcc 警告未定义的结构?

c - Unix-Waitpid 'status'

c - 如何编写带有可选参数和可变参数的宏

python - 如何在 libreoffice calc 中编写 python 宏以在插入外部数据时处理合并的单元格

c - 如何在 Gtk 2 窗口上创建 cairo_t

JavaScript 多维数组检查

java - 为什么我的变量在循环中没有被改变?

for-loop - Lua 二维数组错误

c - 编程 C : default arguments in a macro?