【发布时间】:2021-11-14 22:00:03
【问题描述】:
这是我试图理解的代码的一部分,但我无法理解这样的宏是如何工作的。第一行 #define FOREACH_OMPD_STATE(macro) 定义了一个 function_like Macro,它有一个名为 'macro' 的参数,但定义的其余部分是什么意思?
#define FOREACH_OMPD_STATE(macro) \
\
/* first available state */ \
macro (ompt_state_undefined, 0x102) /* undefined thread state */ \
\
/* work states (0..15) */ \
macro (ompt_state_work_serial, 0x000) /* working outside parallel */ \
macro (ompt_state_work_parallel, 0x001) /* working within parallel */ \
macro (ompt_state_work_reduction, 0x002) /* performing a reduction */
这些不同的参数值是名为 macro 还是什么?
【问题讨论】:
-
参数
macro是一个宏的名称,它与4 个不同的参数列表一起应用,可能会产生有用的结果。您必须查看FOREACH_OMPD_STATE用于查看有关这些宏调用的作用的更多信息。