我正在使用一个包含一组预处理器库的库。其中之一是 FOR_EACH 风格的宏,它遍历 a__VA_ARGS__
并为每个参数调用用户提供的宏。用户提供的宏调用如下:SOME_MACRO(current_arg)
但是,问题在于它仅适用于用户提供的带有单个参数的宏。我正在尝试做一些特别的事情,其中涉及 a 的名称struct
和结构中的每个字段。问题是,这需要宏的两个参数。
由于我正在使用的库只接受一元宏,有没有办法将附加参数“绑定”到我的宏?
到目前为止,我必须在宏中硬编码结构的名称。所以,如果struct
我正在使用的是 named Foo
,我不得不说:
#define MY_MACRO(FIELD) /* do something with &Foo::FIELD */
有没有办法我可以将第二个参数“绑定”STRUCT
到宏,也许还有一些间接的,这样当库调用我的宏时,它就可以扩展为:
#define MY_MACRO(FIELD) /* do something with &STRUCT::FIELD */