微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建用于模拟自由函数的宏

如何解决如何创建用于模拟自由函数的宏

我知道模拟自由函数还“不可能”,所以我想知道是否可以创建为我执行此操作的宏。理想情况下,我可以复制 MOCK_METHOD 中的内容并将其粘贴到 MOCK_FREE 类型的宏中。

#define MOCK_FREE_VOID(ret,name,args,...) ret name args { Mockups::GetInstance()->name (__VA_ARGS__); }
#define MOCK_FREE_NON_VOID(ret,...) ret name args { return Mockups::GetInstance()->name (__VA_ARGS__); }

class Mockusp {
public:
    MOCK_METHOD(void,fun_foo,(foo_t foo,bar_t bar))
    MOCK_METHOD(bar_t,fun_bar,bar_t bar))
...
}

// This works
MOCK_FREE_VOID(void,bar_t bar),foo,bar)
MOCK_FREE_NON_VOID(bar_t,bar)

// I'd like to have
MOCK_FREE_VOID(void,bar_t bar))
MOCK_FREE_NON_VOID(bar_t,bar_t bar))

它为我创建了自由函数并将它们的参数传递给模拟:

void fun_foo (foo_t foo,bar_t bar) { Mockups::GetInstance()->fun_foo (foo,bar); }
bar_t fun_bar (foo_t foo,bar_t bar) { return Mockups::GetInstance()->fun_bar (foo,bar); }

目前,我的宏需要将参数名称附加到末尾,我可以去掉它们吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。