0

听说C没有闭包,今天看到了Objective-C中闭包的使用。Objective-C 支持闭包而不是 C 吗?

更新:感谢所有答案。 我也在网上找到了这个关于块的指南:http: //pragmaticstudio.com/blog/2010/7/28/ios4-blocks-1

4

2 回答 2

5

Apple 添加了^运算符以添加关闭支持。但是,它不依赖于 Objective-C,并且也可以在 C 和 C++ 中使用,只要您使用 Apple 的 GCC 或 LLVM 分支编译项目。这个新功能称为

于 2012-04-27T20:56:07.353 回答
0

C 具有应用程序定义的结构形式的闭包,其中包含函数指针和数据指针。问题在于许多/大多数采用回调指针(如qsort)的接口仅接受函数指针而不接受相应的数据指针,因此无法将闭包传递给它们。

顺便说一句,理论上可以在库级别添加闭包支持而无需编译器的帮助,即创建一个库,该库将返回指向闭包的函数指针。但是,库代码将相当依赖于实现/机器。它需要为可执行代码分配空间并生成代码以将固定指针值(保存为闭包对象的一部分)与其他参数一起传递给函数。

于 2012-04-28T00:01:42.497 回答