c++如何实现这样的一个宏定义

2019-10-15 23:18:28 +08:00
 xuyaomin

请问怎么定义一个宏实现下面的效果 输入 mc(t, a, b)扩展为 t_a t_b,要求参数是可变的 //mc(t, a, b) //t_a //t_b

//mc(t, a, b, c)
//t_a
//t_b
//t_c
4826 次点击
所在节点    C++
4 条回复
ipwx
2019-10-15 23:40:00 +08:00
https://codecraft.co/2014/11/25/variadic-macros-tricks/

虽然我觉得整这么复杂没意义
lechain
2019-10-16 09:17:31 +08:00
##
augustheart
2019-10-16 09:45:13 +08:00
可变参的宏 gcc 支持,vc 不支持。
vc 要支持的话就是定义不同个数的参数形式咯
across
2019-10-16 11:07:57 +08:00
上面说的差不多了,其实就是

#define mc(t,a,b) t##a t##b

写 mc(Class, Example,Inst) 就实现你要的了,至于参数可变的···这个就复杂了,我看大部分例子都是预先写好版本,最多 10 来个参数够你用了吧。这种宏在大型项目里还是挺多的···

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/609716

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX