C 中的宏函数 - 逻辑作为参数?

Macro Functions in C - Logic as argument?

我遇到了下面的宏定义,我正在尝试了解它的用法及其语法和逻辑:

#define FOREACH(elem, list, body) {\
    for(size_t i = 0; i < size(list); ++i)\
    {\
        int elem;\
        if (get_elem(list, i, &value)) {\
            body\
        }\
    }\
}

我以前遇到过宏函数,但是它们更简单,而且从来没有在其中包含这么多逻辑。主要是没看懂,body这个参数是什么。 是否可以传入某些逻辑来代替参数名添加到函数中?

这个指令不是我写的,不知道有没有错误

是的,您可以将任意逻辑作为 body 参数传递。它将被粘贴在这里:

     if (get_elem(list, i, &value)) {\
        body\
    }\