我在我的C++测试代码中有简单的委托函数。由于我不能包含原始实现.cpp文件(嵌入式文件),因此我在PC上运行的测试中使用代理.cpp文件。我的想法是简单地使用相同的宏作为实现的主体,除了根据签名提供的括号()和参数。C++命名空间作为宏值
我想是这样的:
void Flash::init()
{
DELEGATE_DESTINATION();
}
bool Flash::write(args)
{
DELEGATE_DESTINATION(args);
}
bool Flash::read(args)
{
DELEGATE_DESTINATION(args);
}
凡
void Flash::init()
bool Flash::write(args)
bool Flash::read(args)
是相同的嵌入式项目实施的人的人。在测试文件中,我只是将调用中继到假实现。我知道,一种可能的解决方案是已经在不使用中继的假类中包含签名和实现。
我很难搞清楚这个宏。我想是这样的:
#define FAKE_PREFIX fakes::device::Flash::
#define DELEGATE_DESTINATION FAKE_PREFIX##__FUNCTION__
它扩展到FAKE_PREFIX__FUNCTION__
那好吧经历C Preprocessor, Stringify the result of a macro 我只能得到假货到位后展开。
我的目标是能有像
fakes::device::Flash::init
等为阅读和写结果。
你可以使用内联名字空间 –
@GuillaumeRacicot你能给我一个例子,你有什么想法。我检查出来试了一下,但没有得到任何简明的结果......谢谢。 – arapEST
我喜欢,但不幸的是我的内联命名空间的经验是有限的。我只知道这里是为了“默认”选择一个嵌套的命名空间。 –