好的,这个问题可能会让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);
非常感谢大家。
答案 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也是一个,你应该没有任何问题,只需要在外部作用域中保存结构,或者创建另一个表示方法调用链的结构(用于保存参数和其他内容)。