为什么.c文件包含块?(Why can .c files contain blocks?)

2019-10-21 16:36发布

我认为块是Objective-C的功能。 最近我加入块到一些C源文件,我发现它只是编译OK。

我感到困惑,对* .c文件,如果编译器(锵)认为它是纯C文件,为什么它可以允许块?

Answer 1:

其实锵介绍块

到C和通过扩展,目的-C,C ++,和Objective-C ++

正如你可以在这里阅读概述 。

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

编辑 :块也可在GCC,不知道这件事。



Answer 2:

以这样的方式,他们也是在苹果的编译器一个“C”功能中添加块。

从苹果公司的块编程主题

作为随OS X v10.6中的Xcode开发工具块在GCC和锵可用。 您可以使用块与OS X v10.6中和后,与iOS 4.0和更高版本。 该块的运行是开源的,可以在LLVM的编译器-RT子项目库中找到。 块也已提交给C类标准工作组为N1370:苹果的扩展到C.作为Objective-C和C ++都衍生自C,块都设计有三种语言的工作(以及目标-C ++)。 语法反映了这一目标。



文章来源: Why can .c files contain blocks?