boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++ Test里面用一个函数来检查,但是如何让出错的行号显示调用者的行号?
进入Programming版参与讨论
1 (共1页)
b***i
发帖数: 3043
1
class Fixture: public ... {
void Check(a) {
ASSERT_TRUE(a.xx);
ASSERT_FALSE(a.yy);
ASSERT_EQ(a.zz_);
}
};
Test(Fixture, A1) {
A a = ..;
Check(a);
}
Test(Fixture, A2) {
A a(..);
Check(a);
A b(..);
Check(b);
}
调试的时候都显示错在Check代码那些行,看不出到底是哪一行出问题了,比如是a,还
是b。
C++里面有可以显示调用者行号吗?
难道要组合使用__LINE__ ?
void Check(a, string s) {
ASSERT_TRUE(a.xx, s);
ASSERT_FALSE(a.yy, s);
ASSERT_EQ(a.zz_, s);
}
#define EASY_CHECK(a) Check(a, __LINE__)
还有别的办法吗?
b***i
发帖数: 3043
2
看到C++20有一个,可惜太新了
void Check(A a, const source_location loc = source_location::current())
{
ASSERT_TRUE(a.x, loc.line());
}

【在 b***i 的大作中提到】
: class Fixture: public ... {
: void Check(a) {
: ASSERT_TRUE(a.xx);
: ASSERT_FALSE(a.yy);
: ASSERT_EQ(a.zz_);
: }
: };
: Test(Fixture, A1) {
: A a = ..;
: Check(a);

h**********c
发帖数: 4120
3
glibc 的 backtrace
重在参合
h**********c
发帖数: 4120
4
glibc 的 backtrace
重在参合
1 (共1页)
进入Programming版参与讨论