【问题标题】:Why can .c files contain blocks?为什么 .c 文件可以包含块?
【发布时间】:2015-01-22 15:12:52
【问题描述】:

我认为 block 是 Objective-C 的特性。最近我将块添加到一些 C 源文件中,我发现它可以编译。

我很困惑,对于 *.c 文件,编译器(Clang)是否应该将其视为纯 C 文件,为什么它可以允许阻塞?

【问题讨论】:

    标签: objective-c c macos clang


    【解决方案1】:

    其实 Clang 引入了块

    到 C 以及扩展的 Objective-C、C++ 和 Objective-C++

    您可以在overview 中阅读。

    当然,使用块会使您的源代码与 C11 标准不兼容,但您知道,只要您的代码仅适用于 Mac OS X...

    编辑:块也可以在 GCC 中使用,不知道。

    【讨论】:

    • 在 GCC 中也可用。
    【解决方案2】:

    块的添加方式使其也是 Apple 编译器中的“C”功能。

    来自苹果的Blocks Programming Topics

    块在 GCC 和 Clang 中可用,与 OS X v10.6 一起提供 Xcode 开发者工具。您可以在 OS X v10.6 及更高版本中使用块, 和 iOS 4.0 及更高版本。块运行时是开源的,可以 在 LLVM 的 compiler-rt 子项目存储库中找到。块也有 已作为 N1370 提交给 C 标准工作组:Apple 的 C 的扩展。由于 Objective-C 和 C++ 都是从 C 派生的, 块设计用于所有三种语言(以及 目标-C++)。语法反映了这一目标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 2018-05-26
      • 2012-04-03
      • 1970-01-01
      相关资源
      最近更新 更多