Я работаю над приложением smartwatch, написанным на C, и я пытаюсь передать указатель функции в качестве параметра в мои обработчики кнопок, чтобы он мог быть вызван из него. До сих пор я сделал следующее, но я получил сообщение об ошибке, заявив, что объект, который я вызываю, не является функцией.Передача функций как параметров для обработчиков кнопок в C
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);
}
Документация:
action_bar_layer_set_click_config_provider
, на какой строке происходит ошибка? – Bathsheba
ошибка: называемый объект «контекст» не является функцией. При попытке вызвать его в 'select_click_handler' – Rakim
' context' не является функцией, это 'void *'. Вы уверены, что контекст является функцией? Если это так, это вызовет приведение, но я подозреваю, что контекст является контекстом. – doctorlove