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\
}\
我遇到了下面的宏定义,我正在尝试了解它的用法及其语法和逻辑:
#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\
}\