结构的吸收用法

时间:2019-07-15 10:27:06

标签: c struct sdl void

我目前正在C语言中学习SDL,当我查看平常的tutoriaI时,遇到了一段有趣的代码。

为什么要使用它?

使用此样式有什么优势?

typedef struct{
    void (*logic)(void);
    void (*draw)(void);
}Delegate; /* Tags are just for exemplification */

我要在包括SDL的所有项目中使用这种方法吗?

1 个答案:

答案 0 :(得分:0)

这是C语言中的一种多态性,您可以使具有不同行为(逻辑和绘制函数的不同实现)的相同类型的实例。例如,您可以迭代此类型的元素数组,并对每个元素执行不同的功能。如果可以,请避免使用函数指针,因为这样很难定义bug。明智地选择语言,如果您在项目中需要这种行为,并且可以选择语言,请使用一种包含OOP的语言,因为OO是出于这种原因而发明的(不仅如此)