草庐IT

bit_library

全部标签

c++ - cmake:target_link_libraries 使用未共享的静态库

是否可以告诉cmake链接到静态库而不是共享?在我的CMakeLists.txt顶部,我配置了以下内容:set(CMAKE_FIND_LIBRARY_SUFFIXES.a${CMAKE_FIND_LIBRARY_SUFFIXES})稍后,我添加了一个二进制文件,并告诉它在Release模式下链接到tcmalloc:target_link_libraries(${BIN_NAME}optimizedtcmalloc_minimal)生成的makefile链接到tcmalloc的共享版本:$makeVERBOSE=1|greptcmalloc/usr/bin/c++...-Wl,-Bdyn

C++20 bit_cast 与 reinterpret_cast

根据ISOC++委员会的最后一次session,bit-cast将在C++20标准中引入。我知道reinterpret_cast不适合这份工作,因为typealiasingrules但我的问题是,为什么他们选择不扩展reinterpret_cast以将对象视为位序列表示,而更愿意将此功能作为一种新的语言结构提供? 最佳答案 嗯,有一个明显的原因:因为它不会做bit_cast所做的所有事情。即使在我们可以在编译时分配内存的C++20世界中,reinterpret_cast也被禁止在constexpr函数中使用。bit_cast的明确目

c++ - P1236R1 : Why is the c++ standard trying to move away from the word "bit" when defining integers?

根据P1236R1,现在整数类型是用数字来定义的,不再是用位来定义的。typeminimumrangeexponentNsignedchar8short16int16long32longlong64C++没有定义标准仍然缺乏的“位”的含义,而是选择不这样做,而是在rangeexponent术语中定义这些类型。为什么?为什么不依赖“位”这个词比较好?该提案中的“不可观察位”是什么?P1236R1是partofC++20 最佳答案 根据ISO规则,ISOC++委员会的审议是私有(private)的,不能与整个编程社区共享。委员会已就此事

c++ - OpenSSL::SSL_library_init() 内存泄漏

最近我开始研究C++中的内存泄漏,所以我可能会问一个幼稚的问题。我有一个使用OpenSSL的c++库——我的任务是检查这个库中是否存在内存泄漏。我已经运行VisualLeakDetector来检查内存泄漏。我看到对SSL_library_init();和SSL_load_error_strings();的调用导致泄漏-快速谷歌搜索显示在使用结束时我必须调用以下内容:CONF_modules_free();ERR_remove_state(0);ENGINE_cleanup();CONF_modules_unload(1);ERR_free_strings();EVP_cleanup()

c# - 如何在 C# 中实现 BN_num_bytes() (和 BN_num_bits() )?

我是portingthislinefromC++toC#,,不是经验丰富的C++程序员:unsignedintnSize=BN_num_bytes(this);在.NET中我是usingSystem.Numerics.BigIntegerBigIntegernum=originalBigNumber;byte[]numAsBytes=num.ToByteArray();uintcompactBitsRepresentation=0;uintsize2=(uint)numAsBytes.Length;我认为它们在内部的操作方式存在根本差异,因为如果BigInt等于thesources'u

c++ - 是否可以将导入的库添加到 target_link_libraries 来处理包含目录?

不知何故,我正在努力找出是否可以在CMake中定义导入的库,指定目标属性(include_directories和库路径),并希望一旦我将该项目添加到另一个项目中的target_link_libraries,CMake将附加包含目录.假设我在一个名为Module-Conf.cmake的文件中有一个导入的库:add_library(mymoduleSTATICIMPORTED)set_target_properties(mymodulePROPERTIESIMPORTED_LOCATION"${OUTPUT_DIR}/lib")set_target_properties(mymodule

c++ - Boost 是什么意思 "header-only libraries"和 "automatic linking"?

在Boostlibrarydocumentation页面,有两个类别分别名为“HeaderOnlyLibraries”和“AutomaticLinking”。我想“仅标题库”意味着您不必链接到Boost库才能使用它们,“自动链接”意味着你必须链接。但是当我使用Boost.Timer时,我必须链接一个名为timer的静态或动态库(libboost_timer.a和>libboost_timer.so.1.48.0和Linux库路径下的各种软链接(softlink)),这显然是Boost.Timer的确切库文件。我什至需要链接Boost.System和Boost.Chrono,虽然库本身使

c++ - 有条件的 CMAKE 链接到 rt-library

如何编写CMakeLists.txt以仅在Linux环境下有条件地链接到系统范围的librt库? 最佳答案 cmake有几个对环境检测有用的预定义变量(WIN32、UNIX、APPLE、CYGWIN)。以下是完整列表:http://www.cmake.org/cmake/help/cmake-2-8-docs.html#section_VariablesThatDescribetheSystem所以你可以写类似的东西if(UNIXANDNOTAPPLE)target_link_libraries(target_namert)endi

python - 带有 GDB : the case of nlohmann json library 的 C++ 调试/打印自定义类型

我正在使用nlohmann'sjsonC++implementation进行一个项目.如何在GDB中轻松探索nlohmann的JSON键/值?我试过用这个STLgdbwrapping因为它为探索nlohmann的JSON库正在使用的标准C++库结构提供了帮助。但是我觉得不方便。这是一个简单的用例:jsonfoo;foo["flex"]=0.2;foo["awesome_str"]="bleh";foo["nested"]={{"bar","barz"}};我想在GDB中拥有什么:(gdb)pfoo{"flex":0.2,"awesome_str":"bleh","nested":etc

c++ - CHAR_BIT 的更好名称?

我只是checkingananswer并意识到CHAR_BIT没有像我期望的那样由标题定义,甚至没有#include,在较新的GCC上。我真的需要#include只是为了获得CHAR_BIT的“功能”? 最佳答案 您可能知道,实现是否要包含其他header是未指定的。这是允许的,但不是强制性的。(§17.4.4.1)所以你要么必须明确,要么知道你的保证。C++头文件必须包含另一个头文件的唯一情况是它需要在另一个头文件中定义。例如,需要包含对于std::size_t,因为这在标准中明确说明。(对于这个例子,第23.3.5节)作为反例,