听说C没有闭包,今天看到了Objective-C中闭包的使用。Objective-C 支持闭包而不是 C 吗?
更新:感谢所有答案。 我也在网上找到了这个关于块的指南:http: //pragmaticstudio.com/blog/2010/7/28/ios4-blocks-1
听说C没有闭包,今天看到了Objective-C中闭包的使用。Objective-C 支持闭包而不是 C 吗?
更新:感谢所有答案。 我也在网上找到了这个关于块的指南:http: //pragmaticstudio.com/blog/2010/7/28/ios4-blocks-1
Apple 添加了^
运算符以添加关闭支持。但是,它不依赖于 Objective-C,并且也可以在 C 和 C++ 中使用,只要您使用 Apple 的 GCC 或 LLVM 分支编译项目。这个新功能称为块。
C 具有应用程序定义的结构形式的闭包,其中包含函数指针和数据指针。问题在于许多/大多数采用回调指针(如qsort
)的接口仅接受函数指针而不接受相应的数据指针,因此无法将闭包传递给它们。
顺便说一句,理论上可以在库级别添加闭包支持而无需编译器的帮助,即创建一个库,该库将返回指向闭包的函数指针。但是,库代码将相当依赖于实现/机器。它需要为可执行代码分配空间并生成代码以将固定指针值(保存为闭包对象的一部分)与其他参数一起传递给函数。