c - C如何调用不带参数的函数?

标签 c function function-pointers

我正在通过 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/

相关文章:

结构函数指针的编译器处理

pointers - 我应该用指向结构的指针还是只在结构上定义我的函数?

c++ - 如何确定数据是从磁盘还是从缓存中检索出来的?

c - C语言计算字符串中大小写字母的程序

matlab symfun 与匿名函数

r - R中不同类型的函数之间的差异

javascript - 如何从一个组件访问单独文件中的其他函数(非组件)的状态值? react js

c - C 中的 Bsearch 函数无法正常工作

c++ - GNU autotools 的推荐版本是什么?

c++ - 将任何 lambda 函数(包括捕获 lambda)转换为 std::function 对象的模板