gpt4 book ai didi

C++ 使用 __COUNTER__ 自动生成不同的命名函数

转载 作者:太空宇宙 更新时间:2023-11-04 15:41:01 24 4
gpt4 key购买 nike

我想生成对编写单元测试用例有用的不同命名函数。我想这样做基本上是为了给每个单元测试用例赋予唯一的名称。

我正在使用 google 测试框架 编写单元测试用例。我必须使用 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__ 生成唯一函数名称的正确方法是什么?

最佳答案

所以这是旧的“粘贴发生在计算宏参数之前”,所以你得到 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;
}

关于C++ 使用 __COUNTER__ 自动生成不同的命名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23084291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com