如何理解和使用闭包? 最好用 C 语言描述

2014-12-01 15:04:54 +08:00
 Akagi201
今天看到一个小的C的项目, https://github.com/clibs/commander, 上面写到

Closure

cmd.data is a void * so pass along a struct to the callbacks if you want.

这个项目的作者是搞node跟js的, 可能引进了一些思想到C来, 不过我没有看懂这怎么就叫闭包了?

在我看来, 只是回调函数的参数里有个成员是个空指针, 可以传任何值. 这样就算闭包吗?
2916 次点击
所在节点    问与答
5 条回复
GuangXiN
2014-12-01 15:54:14 +08:00
C语言不支持闭包吧
ggarlic
2014-12-01 16:02:18 +08:00
回调参数中的空指针只能算是“类似”闭包
gcc对c作了扩展来支持闭包,名叫Nested Functions
https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
1989922yan
2014-12-01 17:13:14 +08:00
作用域扩大的一种方法。
Akagi201
2014-12-01 18:11:46 +08:00
@1989922yan 有点这种感觉
tabris17
2014-12-01 18:23:10 +08:00
闭包的核心是upval

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/150646

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX