You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让可变参数宏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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:54:52