我正在尝试用C语言(对于嵌入式应用程序)编写代码,其中将根据当前显示的GUI屏幕进行事件回调(通过按按钮导致)来调用不同的函数。
理想情况下,我想多次“定义”如下函数:keyXPressed()并在代码的不同部分编写不同的动作(例如在Screen1上执行此操作,在Screen2上执行该操作),以便单个回调始终引用一个目前在。我知道函数的多种定义可能不是这样,大概会涉及一些面向对象的技术。
以简单优雅的方式实现这种功能的方式有哪些?

最佳答案

使用函数指针。

void (*keyPressed)(screen *);

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


然后,您可以分配keyPressed = keyXPressed;keyPressed = keyYPressed;,然后调用keyPressed(screen1);

10-07 16:33