【发布时间】:2019-06-08 11:39:40
【问题描述】:
在 C 语言中,函数指针作为来自某个库的回调的通常途径是包含一个 void* 指针用于用户的上下文:
void (*fp)(void* ctx);
允许库使用上下文ctx 调用回调。
假设我使用的库在回调中不包含上下文指针。我需要为每个上下文设置一个回调。在 C 中动态分配函数指针以提供回调的最可移植的方法是什么?我怎样才能malloc()一个可以从库中调用的函数代码?
例如:
typedef void (*my_fp_t)(char);
my_fp_t fp = (my_fp_t) malloc(sizeof(...));
init_function_ptr(fp, "Hello, there");
my_library_callback(fp);
...
void my_library_callback(my_fp_t fp) {
fp('a'); // prints "Hello, there"
}
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: c pointers callback function-pointers