C语言中的Javascript回调编码风格?
好吧,这个问题可能会让javascript憎恨者和核心开发人员感到震惊,请原谅我 我喜欢用javascript编写回调函数的方式C语言中的Javascript回调编码风格?,javascript,c,Javascript,C,好吧,这个问题可能会让javascript憎恨者和核心开发人员感到震惊,请原谅我 我喜欢用javascript编写回调函数的方式 var on = function(isTrue, doThis) {if (isTrue) doThis();} 有没有可能在C中复制相同的想法?我知道这取决于类型。 我的情况越来越不一样了: 我有多个布尔值和多个过滤器,所以我的用途是,而不是写作 if (thisIs == true) executeThisVoid(passingThisStruct) 我想
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);
非常感谢大家。我知道,在C语言中,您可以指向函数。。。因此,如果on是一个获得两个函数指针的方法,而这是一个函数指针,executeThisVoid也是一个函数指针,那么您应该不会有任何问题,只需要在外部作用域中保存该结构,或者创建另一个表示方法调用链的结构(以保存参数和其他内容)。好的,开始。首先定义:
void on(int thisIs, void (*executeThis)(void)) {
if (thisIs)
(*executeThis)();
}
然后,定义someVoid:
void someVoid(void) {
/* ... */
}
然后,在另一个函数中,调用:
on(1, someVoid);
可以,但它需要接受和传递指向函数的指针:(为什么不好?请你再详细说明一下好吗?不坏。与Javascript相比,它很难看,也很难阅读。@Gaurav Meh。只有当你对合理的C使用感到不舒服时,它才很难阅读。IMO回调是回调;它在语法上有很小的区别。这是C++11中的一个新特性,称为lambdas,不太可能是o出现在C中。您可能会找到另一种选择。