如何让可变参数宏MACRO2逐个展开为MACRO1调用?
问题:实现可变参数宏展开为多个固定参数宏的调用
我定义了两个宏:MACRO1(x, y)和MACRO2(x, ...)。希望MACRO2(x, a, b, c...)能展开为MACRO1(x, a), MACRO1(x, b), MACRO1(x, c), ...,但不知如何实现。我已查阅类似问题,但未找到完全匹配的方案,若此问题重复请指出。
补充说明1:MACRO1的实际用途
在MACRO1中,x是类,y是该类的成员,实际宏内容为offsetof(x, y), sizeof(x::y)。
补充说明2:MSVC下的兼容性问题
若有人遇到相同问题,注意来自《Foreach macro on macros arguments》的方案在MSVC中无法直接使用,因为MSVC无法正确展开__VA_ARGS__(详见《MSVC doesn't expand VA_ARGS correctly》),最简单的解决方法是添加/Zc:preprocessor编译选项。
内容的提问来源于stack exchange,提问作者ilinm
相关产品推荐
相关产品推荐

