4

我正在阅读有关引用计数的 clang 文档,其中说“在 Objective-C 中,ARC 默认情况下不是异常安全的”。它继续说:

可以使用选项编译程序-fobjc-arc-exceptions以启用这些选项,或者使用选项-fno-objc-arc-exceptions显式禁用它们,最后一个这样的参数“获胜”。在 Objective-C++ 中,-fobjc-arc-exceptions默认启用。

我很感兴趣。是否有任何其他编译器选项在 Objective-C 和 Objective-C++ 之间默认更改?

*.mm补充问题:在 Objective-C++ 模式(文件)而不是仅在 Objective-C 模式( )中用 clang 编译纯 Objective-C 代码有什么区别*.m

4

2 回答 2

3

最好的方法是记录clang将从所有这些c语言中输出的内容

这是我从 obj-c++ 编译中得到的一些东西

clang++ -fobjc-arc main.mm -v

/.../
-fblocks 
-fobjc-runtime=macosx-10.7.0 
-fobjc-dispatch-method=mixed 
-fobjc-default-synthesize-properties 
-fobjc-arc 
-fobjc-arc-cxxlib=libstdc++ 
-fobjc-arc-exceptions 
-fobjc-exceptions 
-fcxx-exceptions 
-fexceptions 
-fdiagnostics-show-option 
-fcolor-diagnostics 
   /.../

如您所见,这些输出可能会因您编译它的位置而异。但其中一些是常数。

您应该尝试不同的 c 系列文件,以确定它们各自的默认选项。

希望它会帮助你。

于 2013-03-08T16:53:41.043 回答
0

回答您问题的第二部分:如果您在 Objective-C 模式而不是 Objective-C++ 模式下编译文件,您会从静态分析器 [ 1 ] 获得更好的支持。我相信编译器通常也会生成更准确的警告(不使用静态分析器),但我无法找到/记住该信息的来源。

于 2013-03-08T15:51:24.007 回答