6 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
C语言实现闭包函数,可以参考《C语言接口与实现》一书,作者多次使用闭包,不过作者说的闭包应该指的是回调函数。和Java估计不大相同。比如下面的这个函数Table_map,其中的回调函数apply,可以在C中称为一个闭包。注:以上是作者的书中,中译本的说法~
void Table_map(T table,
void apply(const void *key, void **value, void *cl),
void *cl) {
int i;
unsigned stamp;
struct binding *p;
assert(table);
assert(apply);
stamp = table->timestamp;
for (i = 0; i < table->size; i++)
for (p = table->buckets[i]; p; p = p->link) {
apply(p->key, &p->value, cl);
assert(table->timestamp == stamp);
}
}
添加回答
举报
0/150
提交
取消