【发布时间】:2015-01-30 16:30:30
【问题描述】:
我正在开发一个用 C 编写的 smartwatch 应用程序,我试图将函数指针作为参数传递到我的按钮处理程序中,以便可以从那里调用它。到目前为止,我已经完成了以下操作,但我收到一条错误消息,指出我正在调用的对象不是函数。
void func(){
...
}
static void select_click_handler(ClickRecognizerRef recognizer, void *context){
context();
}
static void click_config_provider(void *context) {
window_single_click_subscribe(BUTTON_ID_SELECT, select_click_handler);
window_set_click_context(BUTTON_ID_SELECT, context);
}
int main(void){
...
action_bar = action_bar_layer_create();
action_bar_layer_set_click_config_provider(action_bar, click_config_provider);
action_bar_layer_set_context(action_bar, &func);
}
文档:
【问题讨论】:
-
错误出现在哪一行?
-
错误:调用的对象“上下文”不是函数。当试图在
select_click_handler中调用它时 -
context不是函数,而是void *。你确定上下文是一个函数吗?如果是这样,这将需要演员,但我怀疑上下文是上下文。
标签: c function-pointers pebble-watch