【发布时间】:2011-04-13 21:19:29
【问题描述】:
这个问题是关于在特定实现中使用 void 指针的适当性。
我有一个相对简单的程序,它包含一个无限循环。在每个循环中,程序都会迭代固定范围的常量值,并对每个值调用一个函数。调用的特定函数可以是三个可用函数之一,并在运行时由参数指定。在无限循环开始之前,有一个条件块,它根据提供的参数设置指向函数的函数指针。这样条件逻辑只需要运行一次,而不是在每个循环的每次迭代中运行。
这个我已经实现并且运行良好,但我想在每次调用函数之间保持状态。我的建议是将状态存储在结构中,并在对每个值调用函数时传递该结构。问题是每个函数需要不同的结构来存储其状态的一组不同值,并且所有三个函数的原型必须兼容(对于函数指针)。我打算通过在三个函数的原型中使用 void 指针来解决这个问题,从而保持兼容的原型,但允许我将不同的结构传递给每个函数。
问题是;我的提议是对 void 指针的适当使用,还是它引入了太多的运行时动态,因此我应该重新考虑我的方法?
注意:不可能在三个函数中的每一个中都使用静态变量,因为结构体也需要在无限循环中可用,因为在迭代值范围之前和之后还需要进行一些处理。
【问题讨论】:
-
嗯,它是一个守护进程,所以有逻辑来确定它应该何时结束,但细节并不真正相关:-)
标签: c function-pointers void-pointers