【发布时间】:2009-12-03 15:50:15
【问题描述】:
我正致力于在 C 中实现一个非常、非常 的基本组件系统,但现在我想“动态”调用一些函数.设置非常简单:主程序只是一个无限的 while 循环,其中检查一些条件并为每个启用的组件调用一个“进程”函数。
例如,现在它是这样工作的:
while (1) {
input_process();
network_process();
graphics_process();
}
但我想将它分成单独的组件,并以某种方式在中心位置定义使用哪些部分。这可以通过简单的定义来完成,如下所示:
#define HAS_NETWORK
...
while (1) {
input_process();
#ifdef HAS_NETWORK
network_process();
#endif
graphics_process();
}
正如您所看到的,这对于 1 个或可能只有几个组件是可以的,但如果我想在未来对所有这些(输入、网络和图形)和其他组件执行此操作,我将不得不单独放置#ifdefs 每个都在里面,这很乏味。
在伪代码中,我想要完成的是:
components = {'input', 'network', 'graphics'}
...
foreach component in components
execute component_process()
这样以后可以很容易地添加组件。 我真的不介意检查是在编译时还是运行时完成(虽然我显然更喜欢编译时,但我可以想象运行时更容易实现)。我什至不知道如何开始。
【问题讨论】:
-
为什么投反对票?我认为这是一个完全合理的问题。
标签: c function dynamic c-preprocessor