见,例如,这里控制反转或依赖注入 - 任何人在C中执行它?
,提醒自己什么IOC和DI的。
的问题和答案在这里
Is Inversion of Control specific to OO languages?
表明,它并不需要一个面向对象的语言。
现在,我的问题:任何人在C这样做?
我在问,因为我们编写嵌入式C,并且正在考虑应用这些方法,而不改变我们的编程语言。
见,例如,这里控制反转或依赖注入 - 任何人在C中执行它?
,提醒自己什么IOC和DI的。
的问题和答案在这里
Is Inversion of Control specific to OO languages?
表明,它并不需要一个面向对象的语言。
现在,我的问题:任何人在C这样做?
我在问,因为我们编写嵌入式C,并且正在考虑应用这些方法,而不改变我们的编程语言。
在C中一直这样做。在你的第二个链接的答案中给出了提示:来自Azder的回答:
“当你给Windows API函数一个指向回调函数的指针时,你可以让他们控制用自己的参数调用你的函数。“
从这个角度来看,这个概念已经在标准库中用于函数qsort()和bsearch()。
在windows上,你有COM做类似的事情。你有一个接口并在DLL中提供一个实现。您注册DLL,注册过程在注册表中映射接口(UUID)和提供实现的DLL。根据这些信息,当您执行QueryInterface()时,COM服务将加载相应的DLL并创建实现对象的实例,将其转换为所请求的接口类型并返回。
这是使用COM的IoC。由于COM是以'C'实现的,我相信它只是制定出详细信息以便在嵌入式系统上运行。您将需要一个文件来存储接口,实现和DLL之间的映射,而不是注册表。这是在Catia(来自Dassault Systemes)的CNext(V5/V6)体系结构中完成的。它被称为对象建模器框架。
步骤来实现这一目标:
因此,您将接口与运行时的实现绑定在一起。