Обратный вызов для нескольких функций в C - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь написать код на C (для встроенного приложения), в котором будет происходить обратный вызов события (вызванный нажатием кнопки), вызывающий различные функции, в зависимости от экрана GUI, который отображается в данный момент.
В идеале яхотел бы «определить» функцию, такую ​​как: keyXPressed () много раз и запрограммировать различные действия в разных частях кода (как это делают на Screen1 и на Screen2), так что один обратный вызов всегда будет ссылаться на тот, который в данный момент включен,Я знаю, что множественные определения функций, вероятно, не так, и, вероятно, будут задействованы некоторые объектно-ориентированные методы.
Каковы способы достижения такой функциональности простым и элегантным способом?

1 Ответ

0 голосов
/ 19 сентября 2019

Используйте указатель на функцию.

void (*keyPressed)(screen *);

void keyXPressed(screen *s) {
    // code here
}
void keyYPressed(screen *s) {
    // code here
}

Затем вы можете назначить keyPressed = keyXPressed; или keyPressed = keyYPressed; и вызывать keyPressed(screen1);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...