最新的XCode clang支持c ++ 17,但是我不确定较旧的iOS设备(例如,iPhone5,iPhone6)是否具有libc++
支持该功能的库。有没有一种方法可以找出我是否可以使用C ++ 17来构建支持所有受支持的iOS版本的ios应用程序?
参考:仍支持带有iOS12的iPhone5 https://support.apple.com/guide/iphone/supported-models-iphe3fa5df43/12.0/ios/12.0
在某种程度上,答案是肯定的。如果您要重新部署到较旧的操作系统,则可以使用C ++ 17中的某些功能,而其他则无法使用。尝试使用它,如果部署目标上不存在该错误,则会出现编译器错误。这就要求告诉编译器您的部署目标,通常是这样做的-mios-version-min=<version>
(或与其他平台类似)。
具体来说,早于附带的支持的第一个版本的操作系统将不支持在X
系统库(libc++.dylib
)中实现的功能。不需要任何种类的库支持的任何东西,即全部在头文件中实现的东西都可以使用。libc++.dylib
X
我们在libc ++标头中维护可用性标记,以在您使用可能会破坏部署目标的内容时进行标记。这是通过使用__attribute__((availability(ios,strict,introduced=<VERSION>)))
依赖于共享库中某些内容的属性(如声明)来完成的。编译器会完成其余的工作-如果您尝试使用在指定的部署目标中未“引入”的声明,它将让您知道。
编辑:以上以iOS为例,但这适用于macOS,watchOS和所有其他Apple平台。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句