gpt4 book ai didi

c++ - Gcov 报告未命中 return 语句

转载 作者:行者123 更新时间:2023-11-30 04:22:44 25 4
gpt4 key购买 nike

gcov 提示我的一种算法:

File 'Algorithm.h'
Lines executed:95.00% of 20
Algorithm.h:creating 'Algorithm.h.gcov'

17: 25:inline std::vector<std::string> starts_with(const std::vector<std::string>& input, const std::string& startsWith)
-: 26:{
17: 27: std::vector<std::string> output;
17: 28: std::remove_copy_if(input.begin(), input.end(), std::back_inserter(output), !boost::bind(&boost::starts_with<std::string,std::string>, _1, startsWith));
#####: 29: return output;
-: 30:}

我的测试看起来像这样,它通过了:

TEST (TestAlgorithm, starts_with)
{
std::vector<std::string> input = boost::assign::list_of("1")("2")("22")("33")("222");
EXPECT_TRUE(starts_with(input,"22") == boost::assign::list_of("22")("222"));
}

可能是什么问题?我没有使用优化。

更新:

我的 CMakeList.txt 包含:

if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "-O0") ## Optimize
endif()

最佳答案

尝试在 g++ 中使用 -fno-elide-constructors 开关

来自 GCC 权威指南:

-fno-elide-constructors: This option when compiling C++ options causes GCC not to omit creating temporary objects when initializing objects of the same type, as permitted by the C++ standard. Specifying this option causes GCC to explicitly call the copy constructor in all cases.

这里有一些讨论: How can I get more accurate results from gcov?在这里:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12076

关于c++ - Gcov 报告未命中 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13624819/

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