【发布时间】:2015-09-29 05:42:54
【问题描述】:
我想对静态库执行代码覆盖。为此,我使用 boost 编写了测试用例。在我的库中,我在头文件中定义了许多函数。
例如在头文件 accuracy.h 中我有以下功能
static float absf( float x )
{
return (x >= 0.0f) ? x : -x;
}
static boolean almost_zero( float n, float tol )
{
return (boolean)(absf( n ) <= tol);
}
我已经为这些功能编写了测试用例。但问题是 GCOV 显示这些功能没有被覆盖。如果我将函数定义移动到 C 文件,那么我会得到正确的覆盖结果。
我使用 -fprofile-arcs -ftest-coverag 来执行覆盖。有没有人对这个问题有任何想法。
注意:
测试用例被正确执行。我已经通过调试确认了。
我正在使用 MinGW gcc 版本 4.8.1 (GCC)。
【问题讨论】:
-
absf()似乎有点无意义,为什么不使用标准的fabs()代替呢?另外boolean是非标准的,使用bool。 -
absf的返回类型应该是浮点数。 -
absf 和 most_zero 是解释场景的虚拟函数:)。我以任何方式编辑了返回类型
标签: c code-coverage gcov