草庐IT

cxx_destruct

全部标签

c++ - 由于符号与 abi::cxx11 的链接问题?

我们最近因为GCC5.1,libstdc++andDualABI收到了一份报告.好像ClangisnotawareoftheGCCinlinenamespacechanges,因此它基于一组命名空间或符号生成代码,而GCC使用另一组命名空间或符号。在链接时,由于缺少符号而出现问题。如果我正在解析DualABI页面正确,看起来像是在_GLIBCXX_USE_CXX11_ABI和abi::cxx11上进行旋转的问题,还有一些额外的困难。更多阅读请访问RedHat的博客GCC5andtheC++11ABI和TheCaseofGCC-5.1andtheTwoC++ABIs.以下来自Ubuntu

c++ - 对 google::protobuf::internal::empty_string_[abi:cxx11] 的 undefined reference

我正在尝试使用ProtocolBuffers2.6.1和GNUGCC5.1.0(在Ubuntu14.10上)构建简单的测试应用程序,但出现以下错误:/home/ragnar/cpp-tools/gcc-linux/bin/g++-c"/home/ragnar/cpp-projects/gprotobuf_test/main.cpp"-g-O0-Wall-o./Debug/main.cpp.o-I.-I/home/ragnar/cpp-tools/libs/linux64/protobuf/include-I./home/ragnar/cpp-tools/gcc-linux/bin/g+

c++ - 为什么 `is_­destructible` 使用 `declval<U&>().~U()` 而不是 `declval<U>().~U()` 定义?

根据is_destructible的定义(http://eel.is/c++draft/meta.unary.prop#lib:is_destructible),is_­destructible_v是true什么时候:EitherTisareferencetype,orTisacompleteobjecttypeforwhichtheexpressiondeclval().~U()iswell-formedwhentreatedasanunevaluatedoperand,whereUisremove_­all_­extents_­t.为什么使用declval().~U()而不是dec

c++ - 了解 GCC 5 的 _GLIBCXX_USE_CXX11_ABI 或新的 ABI

https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html我在GCC5上使用std::string时遇到了崩溃/valgrind问题。上面的链接暗示从GCC5.x开始的ABI发生了变化。libstd++的新默认ABI是C++11/14...,它与旧ABI不兼容。有一种方法可以使用定义来选择较旧的ABI。我正在尝试了解ABI之间的区别,但尚未找到详细信息。我想帮助理解:需要修复std::string的哪些问题才能与新的ABI兼容?它们是否与写时复制相关?这些更改会破坏旧ABI的功能吗?让_GLIBCXX_USE_

c++ - makefile 中 CXX 的值从何而来?

代码片段:target_test:test.cc$(CXX)$(CPPFLAGS)$(CFLAGS)test.cc我知道CXX是一个变量(包含要调用的编译器命令),但我想知道这个变量是从哪里来的。该变量未在makefile中定义,也不是环境变量。谁能解释一下CXX的值是从哪里来的? 最佳答案 Make有几个predefinedvariables其中是CC。最初,它被设置为cc,它是已安装C编译器的符号链接(symboliclink):$readlink-f`whichcc`/usr/bin/gcc-4.6还有:$readlink-f

c++ - CMake 中的 set_target_properties 是否覆盖 CMAKE_CXX_FLAGS?

在我的CMake项目开始时,我在变量CMAKE_CXX_FLAGS中设置通用编译标志,例如set(CMAKE_CXX_FLAGS"-W-Wall${CMAKE_CXX_FLAGS}")稍后,我需要附加其他特定于配置的编译标志(存储在BUILD_FLAGS中)。我可以为此使用以下命令吗:set_target_properties(${TARGET}PROPERTIESCOMPILE_FLAGS${BUILD_FLAGS})还是我必须手动添加CMAKE_CXX_FLAGS:set_target_properties(${TARGET}PROPERTIESCOMPILE_FLAGS"${CM

c++ - 将 std::__cxx11::string 转换为 std::string

我用的是c++11,还有一些没有配置的库,需要进行一些类型转换。特别是我需要一种将std::__cxx11::string转换为常规std::string的方法,但是谷歌搜索我找不到这样做的方法并把前面的(string)不起作用。如果我不转换,我会收到如下链接器错误:undefinedreferenceto`H5::CompType::insertMember(std::__cxx11::basic_string,std::allocator>const&,unsignedlong,H5::DataTypeconst&)const' 最佳答案

ruby - Ruby 中的终结器 : is there an equivalent to "__destruct" from PHP?

在PHP类中,解析器处理__construct和__destruct方法来实例化实例并在脚本退出或您使用unset时销毁它。当您扩展一个类时,您只需使用parent::__construct和parent::__destruct来运行任何可能需要在被扩展的类上运行的清理代码。现在在表示数据库数据并帮助您操作该数据的类的上下文中,我认为__destruct方法可用于将当前值与从数据库中获取的原始值进行比较,在必要时进行更新(在某些情况下,只要不能更改主键值,就始终进行更新)。在PHP中实现它非常简单。这种方法的主要优点是根据需要简单地快速操作类变量,然后让类在最后进行一次大更新。在运行数

ruby-on-rails - mark_for_destruction 在 before_save

这个before_save-callback有什么问题?classOrder:destroy,:inverse_of=>:orderaccepts_nested_attributes_for:line_itemsattr_accessible:line_items_attributesbefore_save:mark_line_items_for_removaldefmark_line_items_for_removalline_items.eachdo|line_item|line_item.mark_for_destructionifline_item.quantity.to_f当

linux - 如何编译/安装 node.js(无法配置 cxx 编译器!)(Ubuntu)。

如何在Ubuntu上编译/安装node.js?它失败,出现关于cxx编译器的错误。 最佳答案 单线来安装所有需要的依赖项(curl和git并不是真正需要的,但如果你通过nvm安装,它们非常有用并且也需要)。sudoapt-getinstallbuild-essentiallibssl-devcurlgit-core并不总是需要最后两个依赖项,但无论如何安装它们确实很有用,而且您以后可能还需要它。只安装cxx编译器sudoapt-getinstallbuild-essential如果openssl缺失sudoapt-getinstal