我了解C中的函数指针以及如何使用它们。但是,我不知道如何拥有一个可以指向具有不同返回类型的函数的函数指针。这可能吗?我知道如何使用函数指针数组,但是我只发现了不同参数的示例,没有返回类型。(C:如何将单个函数指针数组用于具有可变参数计数的函数?)如果数组更有意义,您能否提供一个示例来说明如何执行此操作?
我有一个switch / case语句来选择将要指向的功能。然后将其作为参数传递给另一个函数。例如,我在下面列出了一些我需要实现的功能:
float* doFloatOps();
void goToSleep();
int* multiplication();
我需要有一个可以设置为指向其中任何一个的函数指针。我认为由于代码的设置,我只能有一个指针。如果您看到一种重组方法,以使函数指向更容易,我将不胜感激。我的代码的当前结构是这样的:
switch(letter)
{
case 'a':
{
functionPointer = &doFloatOps;
}
case 'b':
{
functionPointer = &goToSleep;
}
.......
}
void carryOutFunctions(functionPointer)
{
while(....)
{
functionPointer;
}
}
请原谅以上所有与函数指针问题无关的语法错误。
因此,我的主要问题是:如何拥有一组具有不同返回类型的函数指针或使一个函数指针指向具有不同返回类型的函数?
不可能,您不能拥有指向具有不同返回类型的函数的函数指针,因为它们将是不兼容的类型。在这种情况下,您可以尝试返回void *
,然后根据需要处理返回值。
当然,这要求您在处理返回的数据时要非常小心。pthread
s中的一个示例就是这种技术,您可以在其中传递pthread_create()
具有以下类型的函数指针void (*)(void *)
。
在您的情况下,如果函数返回void *
,它应该可以工作,并且请记住,该函数void *
可以转换为任何指针类型而无需强制转换。
当然,您也可以使用aunion
作为返回类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句