我正在通过building my own Lisp学习C,我很难理解下一行代码是如何工作的:
lenv_add_builtin(e, "def", builtin_def);
我不明白的是:第三个参数如何调用没有参数的函数我的猜测是它们是按照
(lenv*, lval*)
构建的,但我不确定。这是全部代码
// function pointer
typedef lval*(*lbuiltin)(lenv*, lval*);
lval* builtin_def(lenv* e, lval* a){
return lval_sexpr();
}
void lenv_add_builtins(lenv* e){
lenv_add_builtin(e, "def", builtin_def); // ???
}
int main(int argc, char** argv){
lenv* e = lenv_new(); // constructor
lenv_add_builtins(e)
return 0;
}
最佳答案
这条线
lenv_add_builtin(e, "def", builtin_def);
不调用
builtin_def
。它用作lenv_add_builtin
调用中的指针(指向函数)。