我想生成用于编写单元测试用例的不同命名函数。我想这样做基本上为每个单元测试用例提供唯一的名称。
我正在使用 google test framework 来编写单元测试用例。
我必须使用TEST_Macro
来编写单元测试用例。我想自动为每个单元测试提供递增的数字。
这是我的(非工作)代码:
#include <iostream>
using namespace std;
#define join(x, y) x## y
void join(test, __COUNTER__)()
{
cout << "\n 1";
}
void join(test, __COUNTER__)()
{
cout << "\n 2";
}
int main()
{
cout << "Hello world!" << endl;
test0() ;
test1() ;
return 0;
}
使用__COUNTER__
生成唯一函数名称的正确方法是什么?
答案 0 :(得分:6)
所以这是旧的“粘贴在评估宏参数之前发生”,所以你得到test__COUNTER__而不是test0。
您需要执行嵌套宏:
#define expandedjoin(x,y) x##y
#define join(x, y) expandedjoin(x, y)
(代码的其余部分会产生很多错误,因为您将void
函数传递给cout
,这不是很好)
完整的工作代码:
#include <iostream>
using namespace std;
#define expandedjoin(x,y) x##y
#define join(x, y) expandedjoin(x, y)
void join(test, __COUNTER__)()
{
cout << "\n 1";
}
void join(test, __COUNTER__)()
{
cout << "\n 2";
}
int main()
{
cout << "Hello world!" << endl;
test0();
test1();
return 0;
}