为了账号安全,请及时绑定邮箱和手机立即绑定

在参数上重载宏

在参数上重载宏

C
达令说 2019-07-03 14:06:42
在参数上重载宏我有两个宏FOO2和FOO3:#define FOO2(x,y) ...#define FOO3(x,y,z) ...我想定义一个新的宏FOO详情如下:#define FOO(x,y) FOO2(x,y)#define FOO(x,y,z) FOO3(x,y,z)但这不起作用,因为宏不会对参数超载。不修改FOO2和FOO3,有什么方法可以定义宏吗?FOO(使用__VA_ARGS__或以其他方式)获得同样的调度效果FOO(x,y)到FOO2,和FOO(x,y,z)到FOO3?
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

添加到网络编码器的回答,实际上,在GCC的帮助下,您可以使用0参数宏来完成这一任务。##__VA_ARGS__延期:

#define GET_MACRO(_0, _1, _2, NAME, ...) NAME
#define FOO(...) GET_MACRO(_0, ##__VA_ARGS__, FOO2, FOO1, FOO0)(__VA_ARGS__)


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 528 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信