本周新Xcode 3.2.1自带的自述文件说明如下: 静态代码分析通过Build菜单下的Build and Analyze选项或通过自定义构build设置完全集成在Xcode IDE中 GCC 4.2是10.6 SDK的默认系统编译器 包括使用两个不同前端的可选LLVM编译器 – Clang编译器是一个先进的parsing器,可显着提高编译时间。 为了获得最大的兼容性,GCC LLVM编译器利用LLVM后端和GCC 4.2分析器。 新的可选Clang-LLVM 1.0编译器使用快速Clang前端parsing器和LLVM后端编译器,以实现快速编译和快速可执行代码。 尽pipeGCC 4.2仍然是系统默认的,但许多项目都将受益于这种编译器组合。 当Clang-LLVM 1.0编译器遇到C ++代码时,将回退到使用LLVM-GCC 4.2。 我们公司现有的项目是纯C,Objective-C和用于桌面和iPhone的Objective-C ++。 有人可以总结LLVM,GCC,CLANG,CLANG-LLVM,WordFoo等的差异。 人。 并解释他们是什么,什么时候我们应该使用每个和什么? 这将是很好的链接到更详细的解释,但我真的只是在寻找一个高层次的概述。
在C / C ++之前,我已经做了大量的编程,但现在它只占我编程的一小部分(脚本语言更适合于我所做的很多工作)。 我在过去几天一直在做一些C编程项目,并且惊讶地发现我一直忘记了多less个小的语法细节。 更糟糕的是cc / gcc通常有关于这些问题的神秘或非信息性的错误信息(抱歉,我不记得任何具体的例子)。 不久之前,我了解了clang编译器,并决定尝试一下。 错误信息更清晰,帮助我识别和修复语法中的问题。 我的问题是为什么这个工具不被使用/提到比它更多? 难道它和通常的嫌疑犯( cc / gcc )相比是如此新鲜,还是它不支持它们支持的function,还是只是难以获得? 我很难相信最后一个,因为它是与我的iMac上的开发工具一起安装的,并且需要一个命令( sudo apt-get install clang )来安装在我的Ubuntu盒子上。
我在CodeGolf上看到了一段代码,它被用作编译器炸弹,其中main被声明为一个巨大的数组。 我尝试了以下(非炸弹)版本: int main[1] = { 0 }; 它似乎在Clang下编译得很好,在GCC下面只有一个警告: 警告:'main'通常是一个函数[-Wmain] 由此产生的二进制文件当然是垃圾。 但为什么它编译? C规范甚至允许吗? 我觉得有关的部分是说: 5.1.2.2.1程序启动 程序启动时调用的函数名为main。 这个实现声明了这个函数没有原型。 它应该用一个返回typesint来定义,并且不带任何参数或者带有两个参数,或者以某种其他实现定义的方式来定义。 “一些其他实现定义的方式”是否包含全局数组? (在我看来,规范仍然是指一个函数 。) 如果不是,它是一个编译器扩展吗? 还是工具链的一个function,这是为其他目的服务的,他们决定通过前端提供它?
铿锵 C ++编译器声称是build立,除其他外,更好的IDE集成通过提供一个API的IDE用于任务,如parsing代码。 那么,有没有好的C ++ IDE使用clang来实时提供语义高亮,重构以及查找和显示语义错误等function? 我一直在使用Eclipse CDT,但是它的C ++parsing器充满了不完善之处,导致IDE在代码中报告了很多恼人的错误肯定错误。 我想有一个IDE报告错误,当且仅当编译器会报告相同的错误,因此我对一个build立在编译器内部的IDE感兴趣。 我主要感兴趣的是跨平台IDE,尽pipe我不介意知道Windows或Linux的单一平台( 不是 Xcode),只要它们是FOSS(另一个不是 Xcode的原因)。
是否有可能在Eclipse CDT中使用Clang / LLVM ,如果是这样,它是如何configuration实际使其工作?
如果我读到Mike Ash的“Zeroing Weak References”写法是正确的,那么弱引用就像是在没有ARC的情况下assign引用。 但是,如果被引用的对象被释放,而不是获得一个“悬挂指针”(意味着指向一个释放对象的指针),指针将被设置nil 。 这是正确的, 这是否发生在任何标记为weak或assign属性(当ARC处于活动状态时)? 如果这是正确的,这将消除许多SIGABRT。
在最新的iOS SDK中,Apple提供了三种编译器选项:GCC,Clang和LLVM-GCC。 我或多或less地理解这三个含义,LLVM和Clang是什么,等等。 我不知道的是这对于iPhone开发者来说意味着什么。 截至2011年1月,我现在应该使用哪一个? LLVM是否已经足够成熟,我可以安全地使用它,而不会经常绊倒其中的错误? 切换到LLVM是否有其他缺点? 如果是这样,那么速度优势是否超过了它们呢? 除了速度之外还有其他什么原因需要切换吗?
我一直在试图find一种方法让Clang在Windows上工作,但遇到了麻烦。 我得到了Clang编译成功,但是当我尝试编译一个程序时,我在标准头文件中有一堆错误。 我知道rubenvb的铿锵的预编译版本 ,但我想为自己编译它。 我也在听GoingNative谈论关于铿锵声说它还没有很好的Windows支持。 我怎样才能在Windows上铿锵声工作?
我看到了编译器选项GNU99和C99。 他们有什么不同? 任何详细的文件? (Clang,Xcode,Mac OS X)
我在哪里可以find完整的ng标志列表? 有一些像-include-pch,甚至没有出现在man page中。 🙁 我知道海湾合作委员会使用一些相同的标志,但它不包括类似-Os的文件,我相信它只能在叮当声中使用。 有没有一个地方可以find一个单一的,所有的铿锵选项有史以来的综合名单?