这几行作为C中的小型测试框架做了什么?
发布时间:2020-12-16 03:28:57 所属栏目:百科 来源:网络整理
导读:嗨,我正在阅读std :: optional here的实现,我在其单元测试文件中找到以下行. struct caller { template class T caller(T fun) { fun(); }};# define CAT2(X,Y) X ## Y# define CAT(X,Y) CAT2(X,Y)# define TEST(NAME) caller CAT(__VAR,__LINE__) = [] 我真
嗨,我正在阅读std :: optional
here的实现,我在其单元测试文件中找到以下行.
struct caller { template <class T> caller(T fun) { fun(); } }; # define CAT2(X,Y) X ## Y # define CAT(X,Y) CAT2(X,Y) # define TEST(NAME) caller CAT(__VAR,__LINE__) = [] 我真的不明白这些线是做什么的.调用者似乎是一个调用函数的模板,但它如何用作调用者CAT …? 编辑:非常确定在运行二进制文件时执行测试,但是如何实现? 解决方法
您可以在预处理后查看输出(-E表示gcc)…
这是我添加宏的用法的代码: struct caller { template <class T> caller(T fun) { fun(); } }; # define CAT2(X,__LINE__) = [] TEST(disengaged_ctor) { foo(); }; after preprocessing the last line turns to: caller __VAR10 = []{ foo(); }; 我对__VAR和未使用的NAME *感到有些困惑.但是,[] {foo();用于创建调用者的lambda是在调用者构造函数中调用的. * =我想这个想法如下:假设你收到一条错误信息,说__VAR10中有错误,然后在第10行找到TEST(disengaged_ctor),即.失败测试的名称. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |