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
提交
取消