Mik*_*ike 5 c function-pointers
在C中这样的事情可能吗?
#include <stdio.h>
void print_str(char *str) {
printf(str);
}
int main() {
void (*f_ptr)() = print_str,"hello world";
f_ptr();
}
//see "hello world" on stdout
Run Code Online (Sandbox Code Playgroud)
简而言之,我想要一个"存储"参数的函数指针.关键是函数指针可以在以后使用而无需引用原始数据.
我可以使用这样的东西来耦合函数指针和参数引用
struct f_ptr {
void (*f)();
void *data;
}
void exec_f_ptr(f_ptr *data) {
data->f(data->data):
}
Run Code Online (Sandbox Code Playgroud)
但是不会像在里面用参数调用函数指针一样优雅.
您基本上是在要求一个闭包而不是一个函数指针——也就是说,数据和代码位于一个“对象”中。这样的对象在标准 C 中不存在——您可以从 Apple 的块或其他语言的匿名函数(或从支持它们的语言中直接的闭包)获得类似的东西,但一般来说您必须构造一些数据类型正如您所发现的,您自己的。
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |