【发布时间】:2013-12-29 21:15:56
【问题描述】:
我有两个函数,每个函数都有一个指向不同类型的指针:
void processA(A *);
void processB(B *);
是否有一个函数指针类型能够在不强制转换的情况下保存指向任一函数的指针? 我尝试使用
typedef void(*processor_t)(void*);
processor_t Ps[] = {processA, processB};
但它不起作用(编译器抱怨指针初始化不兼容)。
编辑:另一部分代码将在不知道类型的情况下遍历 Ps 的条目。此代码将传递一个 char* 作为参数。像这样:
Ps[i](data_pointers[j]);
编辑:谢谢大家。最后,我可能会使用这样的东西:
void processA(void*);
void processB(void*);
typedef void(*processor_t)(void*);
processor_t Ps[] = {processA, processB};
...
void processA(void *arg)
{
A *data = arg;
...
}
【问题讨论】:
-
没有参数列表,如果这是纯 C,它将编译
-
如果允许,那么我很容易将
A*传递给processB。毕竟任何指针类型都可以转换为void*,因此它会让我违反类型安全。 -
从技术上讲,它编译,它只是抛出一个警告。我的问题是是否可以在不强制转换初始化程序的情况下摆脱警告?
标签: c void-pointers function-prototypes