2

好吧,这个问题可能会让 javascript 的仇恨者和铁杆开发者感到震惊,请原谅我!

我喜欢用 javascript 编写回调函数的方式

var on = function(isTrue, doThis) {if (isTrue) doThis();}

是否有可能在 C 中复制相同的想法?我知道它取决于类型。越来越少这是我的情况:

我有多个布尔值和多个过滤器,所以我的用途是,而不是写

if (thisIs == true) executeThisVoid(passingThisStruct)

我很想写:

on(thisIs, function(struct){ do this and this})

或者干脆

on(thisIs, executeThisVoid);

非常感谢大家。

4

2 回答 2

2

好的,这就去。首先定义:

void on(int thisIs, void (*executeThis)(void)) {
    if (thisIs)
        (*executeThis)();
}

然后,定义 someVoid:

void someVoid(void) {
    /* ... */
}

然后,在另一个函数中,调用:

on(1, someVoid);
于 2013-01-26T22:22:06.507 回答
0

据我所知,在C语言中你可以指向函数......所以,如果on是一个获取两个函数指针的方法,thisIs是一个函数指针,并且executeThisVoid也是一个,你应该没有任何问题,只需要将结构保存在外部范围内,或创建另一个表示方法调用链的结构(以保存参数和其他内容)。

于 2013-01-26T22:10:09.933 回答