jjzjj

fno-rtti

全部标签

c++ - 如何检测我的代码是否使用 -fno-exceptions 进行编译?

我正在编写一个C++库,我想让我的API为无效参数抛出异常,但是当使用-fno-exceptions编译代码时,我依赖于断言。有没有办法在编译时检测我是否被允许使用异常处理?请注意,我正在编写一个仅包含header的库,因此我没有configure阶段,也无法访问构建系统来简单地在命令行上定义一个宏(并且我不想给用户增加负担)。由于标准没有任何“-fno-exceptions”的概念,当然解决方案可能依赖于编译器。在这种情况下,我对同时使用g++和clang++的解决方案感兴趣,其他编译器对于这个项目并不重要。非常感谢 最佳答案 G

ios - 圆弧 : Setting compiler flags to -fno-objc-arc and build errors

在关于为特定类禁用ARC编译器机制的stackoverflow主题之后,我将-fno-objc-arc参数添加到CompileSources部分(TARGETS项目中的BuilPhases选项卡)下的CompilerFlags列。即使设置已经过验证,我也无法构建我的应用程序,因为编译器说retain、release等不能在ARC下使用。如何解决上述问题?提前谢谢你。 最佳答案 您是否使用迁移工具执行迁移?您是否将编译器标志添加到所有具有释放/保留的文件?我写了关于ARCmigrationonmyblog在这里。

iphone - 批量向(多个)源文件添加 "-fno-objc-arc"标志

将Xcode项目转换为ARC(自动引用计数)后,我需要为我的某些源文件(主要是第三方代码)禁用ARC。我知道我需要为这些文件中的每一个设置“-fno-objc-arc”标志,但是Xcode没有给我批量编辑的选项-我需要手动将这个标志添加到每个文件,这如果您需要为多个文件设置它,可能会很乏味。有人对此有聪明的方法吗? 最佳答案 选择你想要添加标志的那些(使用Shift和/或Command)并按Enter显示标志编辑器.按完成将输入的标志应用到所选文件。教程我编写了一个blogpost作为此过程的教程。

iphone - 批量向(多个)源文件添加 "-fno-objc-arc"标志

将Xcode项目转换为ARC(自动引用计数)后,我需要为我的某些源文件(主要是第三方代码)禁用ARC。我知道我需要为这些文件中的每一个设置“-fno-objc-arc”标志,但是Xcode没有给我批量编辑的选项-我需要手动将这个标志添加到每个文件,这如果您需要为多个文件设置它,可能会很乏味。有人对此有聪明的方法吗? 最佳答案 选择你想要添加标志的那些(使用Shift和/或Command)并按Enter显示标志编辑器.按完成将输入的标志应用到所选文件。教程我编写了一个blogpost作为此过程的教程。

没有 libstdc++ 的 C++ RTTI。可能吗?

我想研究如何在没有libstdc++但支持rtti的情况下链接C++程序。我尝试按照下面描述的方式编译它。我可以在示例中定义任何必要但不存在的符号,如函数strcmp,但是是否可以在没有显式mangle/demangle魔法的情况下定义typeinfo符号?如果可能的话,怎么做?cd/tmp&&catrtti.cpp&&g++-nodefaultlibs-lcrtti.cppextern"C"intstrcmp(constchar*s1,constchar*s2){return0;};#include"typeinfo"intmain(){returntypeid(int)==type

没有 libstdc++ 的 C++ RTTI。可能吗?

我想研究如何在没有libstdc++但支持rtti的情况下链接C++程序。我尝试按照下面描述的方式编译它。我可以在示例中定义任何必要但不存在的符号,如函数strcmp,但是是否可以在没有显式mangle/demangle魔法的情况下定义typeinfo符号?如果可能的话,怎么做?cd/tmp&&catrtti.cpp&&g++-nodefaultlibs-lcrtti.cppextern"C"intstrcmp(constchar*s1,constchar*s2){return0;};#include"typeinfo"intmain(){returntypeid(int)==type

C++ - 在没有 RTTI/dynamic_cast 的情况下向下转换菱形继承对象

我目前正致力于在非RTTI平台(Android)上集成使用大量RTTI内容的第三方包。基本上,我自己实现了RTTI,但遇到了一个问题。问题是很多类都有菱形继承问题,因为所有类都派生自同一个基类(对象)。所以,如果我想从基类向下转换为派生类,我必须使用dynamic_cast-但RTTI不可用!没有dynamic_cast的虚拟继承时,如何将对象从父对象转换为子对象?看起来是这样的:classA{public:virtualchar*func(){return"A";};};classB:publicvirtualA{public://virtualchar*func(){return"

C++ - 在没有 RTTI/dynamic_cast 的情况下向下转换菱形继承对象

我目前正致力于在非RTTI平台(Android)上集成使用大量RTTI内容的第三方包。基本上,我自己实现了RTTI,但遇到了一个问题。问题是很多类都有菱形继承问题,因为所有类都派生自同一个基类(对象)。所以,如果我想从基类向下转换为派生类,我必须使用dynamic_cast-但RTTI不可用!没有dynamic_cast的虚拟继承时,如何将对象从父对象转换为子对象?看起来是这样的:classA{public:virtualchar*func(){return"A";};};classB:publicvirtualA{public://virtualchar*func(){return"

c++ - BOOST_NO_EXCEPTIONS 是否保证与 -fno-exceptions 兼容?

我想将Boost.Filesystem与-fno-exceptions一起使用。根据Boost.Filesystemdocumentation它声明它支持BOOST_NO_EXCEPTIONS宏。但是,以下snippet:#defineBOOST_NO_EXCEPTIONS#includeintmain(){}编译:g++-fno-exceptionsboost_test.cpp给出错误:/.../boost/filesystem/operations.hpp:Inconstructor'boost::filesystem::filesystem_error::filesystem_e

c++ - BOOST_NO_EXCEPTIONS 是否保证与 -fno-exceptions 兼容?

我想将Boost.Filesystem与-fno-exceptions一起使用。根据Boost.Filesystemdocumentation它声明它支持BOOST_NO_EXCEPTIONS宏。但是,以下snippet:#defineBOOST_NO_EXCEPTIONS#includeintmain(){}编译:g++-fno-exceptionsboost_test.cpp给出错误:/.../boost/filesystem/operations.hpp:Inconstructor'boost::filesystem::filesystem_error::filesystem_e