C中的Javascript回调编码风格?

时间:2013-01-26 22:06:28

标签: javascript c

好的,这个问题可能会让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);

非常感谢大家。

2 个答案:

答案 0 :(得分:2)

好的,这里有。首先定义:

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

然后,定义someVoid:

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

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

on(1, someVoid);

答案 1 :(得分:0)

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