我想在靜態庫上執行代碼覆蓋率。爲此,我使用boost來編寫測試用例。在我的庫中,我有許多在頭文件中定義的函數。C源代碼的GCOV靜態庫覆蓋率
例如在頭文件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()'](http://linux.die.net/man/3/fabs)呢? 'boolean'也是非標準的,使用'bool'。 – unwind
'absf'的返回類型應該是float。 – ryanpattison
absf和almost_zero是虛擬函數來解釋場景:)。我已經編輯了返回類型的任何方式 –