【问题标题】:How to check for Objective 2.0 support by GCC under linux?如何在 linux 下检查 GCC 对 Objective 2.0 的支持?
【发布时间】:2014-03-08 21:20:53
【问题描述】:

我在 linux 下,我同时拥有来自 svn 主干的 clang 3.5gcc 4.8.1。令我惊讶的是,我无法使用 gcc 编译 objective-c 2.0 代码,但我可以使用 clang 来编译。

我知道gccclang 出现之前很长一段时间都是MAC OS X 上的默认编译器。那么为什么gcc在linux下不支持obj-c 2.0呢?

clang 甚至可以很好地与 GNUstep 配合使用,而 gcc 在该语言 2.0 版的实现功能方面确实跟不上。

例如,autoreleasepool 关键字不支持 gcc

【问题讨论】:

    标签: objective-c linux gcc clang


    【解决方案1】:

    这实际上取决于您所说的“Objective-C 2.0”是什么意思。没有正式的书面规范。

    您可能认为是“Objective-C 2.0”的几个语言功能仅由 clang 支持,而 gcc 从未支持。其中包括 ARC、NSNumber/NSArray/NSDictionary 文字和对象下标。 @autoreleasepool 语法是 ARC 的一部分。

    【讨论】:

    • Apple 在 2009 年发布了一份关于使用 objc-2.0 进行编程的 pdf 文档。我的帖子中使用的标签证实了这一点。我仍然不了解语言规范,但显然有一种由 Apple 自己标记为 2.0 的 ObjectiveC 语言。那么,甚至没有来自gcc 的叉子或分支具有良好的objc-2.0 实现? clang 是世界上唯一提供objc-2.0 的编译器?
    • 请发布 PDF 链接。据我所知,Apple 非正式地使用“Objective-C 2.0”来表示他们在 2006 年发布的新语言功能的集合。没有 Objective-C 的标准机构,也没有我见过的书面规范(尤其是自从 Apple 采用过时的Objective-C 编程语言一书)。 2006 年,Apple 在 gcc 中实现了新功能。从那时起,他们放弃了 gcc,并在 clang 中实现了几个新的语言特性。除了编译器版本之外,该语言没有官方名称或版本号。
    • 您可以在 Apple 的 Objective-C Feature Availability Index 中找到有关哪个编译器版本支持哪些语言功能的一些信息,但您会注意到 @property 和 instance-variables-in-@implementation 等较旧的功能, gcc 和 clang 都支持的,甚至没有列出。
    • 给你cagt.bu.edu/w/images/b/b6/Objective-C_Programming_Language.pdf,感谢那个链接,我没想到objc 在支持方面会受到如此限制,即使在MAC gcc 上仍然很受欢迎。
    • 出于好奇,您提到的 pdf 是什么?
    猜你喜欢
    • 2020-01-23
    • 1970-01-01
    • 2011-10-01
    • 2021-08-05
    • 2014-08-25
    • 1970-01-01
    • 2018-07-18
    • 2014-01-13
    • 2013-02-26
    相关资源
    最近更新 更多