我正在通过 building my own Lisp 学习 C我无法弄清楚下一行代码是如何工作的:
lenv_add_builtin(e, "def", builtin_def);
我不明白的是:第三个参数如何调用没有参数的函数(lenv*, lval*)
。我猜它们是作为 typedef structs
构建的,但我不确定。
这是完整的代码
// 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
时用作指针(指向函数)。
关于c - C如何调用不带参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23745176/