iphonec++/目标C例外 有谁知道在XCoad中启用C++异常处理对iPhone应用程序的影响吗?默认情况下,它似乎已禁用 C++和Objc C是否相同,或者C++异常只能被C++代码捕获,反之亦然?

iphonec++/目标C例外 有谁知道在XCoad中启用C++异常处理对iPhone应用程序的影响吗?默认情况下,它似乎已禁用 C++和Objc C是否相同,或者C++异常只能被C++代码捕获,反之亦然?,c++,objective-c,exception-handling,C++,Objective C,Exception Handling,谢谢 有没有人知道在XCoad中启用C++异常处理对iPhone应用程序的影响? 这是C++异常处理的正常选择。如果你正在使用C++库,你可能需要启用这个。 您不能假设异常会干净地跨图像边界传播。也就是说,你不能假设它被定义为跳过基础帧并在另一边捕获。在MyApp中抛出MyLib->through Foundation->catch会导致未定义的行为。所以,您必须假设您需要在MyLib中捕获这些 不同于OS X,iPhone的C++和Objc异常不是使用“零成本异常”来实现的。由于展开表的大小以

谢谢

有没有人知道在XCoad中启用C++异常处理对iPhone应用程序的影响? <>这是C++异常处理的正常选择。如果你正在使用C++库,你可能需要启用这个。

您不能假设异常会干净地跨图像边界传播。也就是说,你不能假设它被定义为跳过基础帧并在另一边捕获。在MyApp中抛出MyLib->through Foundation->catch会导致未定义的行为。所以,您必须假设您需要在MyLib中捕获这些

不同于OS X,iPhone的C++和Objc异常不是使用“零成本异常”来实现的。由于展开表的大小以及编译器的支持,零成本异常(支持执行速度而不是大小)并没有被使用

启用异常需要一定的速度和大小——我希望对于iOS上的大多数程序来说,这不到10%

最终,需要确定是否应该启用异常,它们将引入一些执行和大小开销。除非你使用非常专业的C++库,否则你应该假设你需要启用它们。但是,该功能是受支持的

C++和Objc C是否相同,或者C++异常只能被C++代码捕获,反之亦然?


在64位OS X和IOS环境中,可以使用任一处理程序捕获C++和Objc异常。在32位OS X中,它们使用不同的异常模型。因此,“catch”表达式(无论是在LAN中写)都能在iOS和64位OS X中同时捕获C++和Objc异常,但在32位OS X.< /P>中,我认为我读到了关于LLDB C++支持的某些东西是有限的(由于Objc++的“不神圣婚姻”)的好答案。如果你在文档中添加适当的链接来详细说明这些内容,那就更好了,特别是32位和64位之间的区别。@Caleb有些可以在苹果的“例外编程主题”中找到