小编Ser*_*lov的帖子

使用boost进行TCP Zero复制

我试图使用提升实现tcp零拷贝,但我无法在谷歌上找到任何东西.我的问题是可以使用升级库执行零拷贝,如果是这样,请发给我一些示例或一些链接.

c++ boost tcp boost-asio

6
推荐指数
1
解决办法
1603
查看次数

使用 cmake 配置代码覆盖率

我在一台 linux 机器上,尝试使用 cmake 构建一个项目,该项目不使用源代码构建。对于代码覆盖率,我查看了 gcov 并遵循了一个简单的教程,该教程为示例helloWorld.cpp程序生成了适当的文件。唯一的要求是使用-fprofile-arcs -ftest-coverage标志进行编译并使用标志链接-lgcov,这可以与-coverage标志一起完成。

现在到了棘手的部分。我有一个CMakeLists.txt智慧内容,如下所示:

cmake_minimum_required (VERSION 2.8)
project (SomeName)

SET(GCC_COVERAGE_COMPILE_FLAGS "-g -O0 -coverage -fprofile-arcs -ftest-coverage")
SET(GCC_COVERAGE_LINK_FLAGS    "-coverage -lgcov")
SET( CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}" )
SET( CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}" )

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

include_directories(include)
set(CATCH_HEADER_PATH ${PROJECT_SOURCE_DIR}/test/catch.hpp)

add_executable(runTest ${PROJECT_SOURCE_DIR}/test/test.cpp ${CATCH_HEADER_PATH}) 
Run Code Online (Sandbox Code Playgroud)

因此,我也包含了适当的编译时标志以及链接器标志,并正确附加了它们。另一件事要注意的是set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)line 表示将在bin目录中生成可执行文件。

现在,除了未正确生成覆盖文件之外,一切都按预期工作。我按照以下步骤操作:

mkdir build && cd build
cmake ..
make -j4
./bin/runTest
Run Code Online (Sandbox Code Playgroud)

文件bin夹内没有生成其他文件。然而,经过更多检查,我发现最初和最后一步之后还有另一个位置build/CMakeFiles/runTest.dir/test,生成了两个新文件 - & 。test.cpp.o./bin/runTesttest.cpp.gcda …

c++ linux code-coverage cmake gcov

5
推荐指数
1
解决办法
8074
查看次数

如何将派生对象置于地图中

我还是C++的新手,遇到了一个我似乎无法在地图中插入新派生类的问题.

我的代码简化如下:

std::map<int, std::unique_ptr<Base_Class> > m;

void func(){
  for(int num = 0; num < 100; n++){
    m.emplace(num, new Derived_Class() );
  }  

}
Run Code Online (Sandbox Code Playgroud)

这给了我这个:

error: no matching function for call to 'std::pair <const int, std::unique_ptr<Base_Class> >::pair(int&, Derived_Class*)
Run Code Online (Sandbox Code Playgroud)

我尝试过使用失败:

m.emplace(std::pair(num, new Derived_Class()) );
Run Code Online (Sandbox Code Playgroud)

这给了我这个:

error: no matching function for call to 'std::pair<const int, std::unique_ptr<Base_Class> >::pair(std::pair<int, Derived_Class*>)
Run Code Online (Sandbox Code Playgroud)

我似乎无法想出这个,并希望得到任何帮助.

c++ c++11

5
推荐指数
1
解决办法
237
查看次数

标签 统计

c++ ×3

boost ×1

boost-asio ×1

c++11 ×1

cmake ×1

code-coverage ×1

gcov ×1

linux ×1

tcp ×1