这是否适用于void指针?

Sla*_*ish 2 c function-pointers void-pointers

这个问题是关于在特定实现中使用void指针的适当性.

我有一个相对简单的程序,包含一个无限循环.在每个循环中,程序迭代固定范围的常量值并在每个值上调用一个函数.调用的特定函数可以是三个中的一个,并且在运行时由参数指定.在无限循环开始之前,有一个条件块,它根据提供的参数设置一个函数指针.这样,条件逻辑只需运行一次,而不是每次循环中的每次迭代运行.

我已经实现了它并且运行良好,但我希望在每次调用函数之间保持状态.我的建议是将状态存储在结构中,并在每个值上调用函数时传递该结构.问题是每个函数都需要一个不同的结构来存储其状态的不同值集,并且所有三个函数的原型必须兼容(对于函数指针).我打算通过在三个函数的原型中使用void指针来解决这个问题,从而保持兼容的原型,但允许我将不同的结构传递给每个函数.

问题是; 我的建议是否适当使用了void指针,或者它是否引入了太多的运行时动态,因此我应该重新考虑我的方法?

注意:不可能在三个函数中的每个函数中使用静态变量,因为结构也需要在无限循环中可用,因为在迭代值范围之前和之后还要进行一些处理.

Ken*_*kot 5

只要您小心保持您的呼叫类型正确,这是完成您描述的相当C语言的方式.