iphone - 用于 iOS 开发的 LLVM 与 GCC

标签 iphone objective-c compiler-construction llvm clang

在最新的 iOS SDK 中,Apple 提供了三种编译器选项:GCC、LLVM with Clang 和 LLVM-GCC。我或多或少地了解这 3 个是什么意思,LLVM 和 Clang 是什么,等等。我不知道这对 iPhone 开发人员在实践中意味着什么。截至 2011 年 1 月,此时我应该使用哪一个? LLVM 是否足够成熟,以至于我可以安全地使用它而不会经常遇到错误?切换到 LLVM 还有其他缺点吗?如果是这样,那么速度优势是否超过了它们?除了速度之外,还有什么其他原因需要切换吗?

最佳答案

更新:因为人们仍在寻找这个答案,我觉得我应该提供一个合适的更新。到目前为止,我希望 Clang 绝对是编程时要走的路,Clang 是新版本 Xcode 中的默认编译器,并支持 ARC 和新的和即将推出的语言结构(数组和字典下标、文字等) .几乎完全没有理由再使用 GCC 进行编译了,对于使用 ARC 和新特性的代码库,使用普通 GCC 不再相关或不可能(LLVM-GCC 可能支持这些特性,但由于 Clang 完全是稳定)。


到目前为止(LLVM-2.0 包含在 Xcode 4.0 测试版中),LLVM 已经足够成熟,可以用于生产代码。它的编译速度比 GCC 快一点,生成的代码也更快,所以尽可能使用它(几乎,如果有更好的东西,尽量避免使用 GCC)。标准的 Xcode 3.2.5 安装包含 LLVM-1.6(不是最新版本),因此我建议您运行一些速度测试以查看 GCC 和 LLVM 之间是否存在明显差异,或者从源代码编译 Clang 并获取最新版本。

本质上,GCC 已经不需要了,LLVM + Clang 绰绰有余。

关于iphone - 用于 iOS 开发的 LLVM 与 GCC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4589335/

相关文章:

iphone - 向 iphone/android app/webapp 发送通知有哪些选项?

iphone - MKReverseGeocoder 委托(delegate)方法是否在单独的线程上工作?

ios - "NSMutableArray"没有可见的@interface 声明选择器 'addObject:initWithBackgroundImage:'

language-agnostic - 我在哪里可以学习编写词法分析器的基础知识?

macos - 用户级别的 Haskell

iphone - UITableView懒加载优化

iphone - 不兼容的指针类型将 'NSSortDescriptor *__strong' 发送到 'NSArray * 类型的参数

ios - 断点和日志根本不起作用

ios - 在 Objective-C 中找不到带有 Swift 类参数的方法

c++ - 通过 C++ 中的静态实例的单例——进入源文件或头文件?