具有不同 Return 类型的函数指针 C

Function Pointers with Different Return Types C

我了解 C 中的函数指针以及如何使用它们。但是,我不知道如何拥有一个可以指向具有不同 return 类型的函数的函数指针。这可能吗?我知道如何使用函数指针数组,但我只找到了不同参数的示例,而不是 return 类型。 (C: How can I use a single function pointer array for functions with variable parameter counts?)如果数组更有意义,您能否举例说明如何做到这一点?

我有一个 switch/case 语句 select 将指向的函数。然后将其作为参数传递给另一个函数。例如,我在下面列出了一些我需要实现的功能:

float* doFloatOps();
void goToSleep();
int* multiplication();

我需要一个可以设置为指向其中任何一个的函数指针。我认为由于代码的设置,我只能有一个指针。如果您看到一种重组它以使函数指向更容易的方法,我将不胜感激。我的代码的当前结构是这样的:

switch(letter)
{
    case 'a':
    {
        functionPointer = &doFloatOps;
    }
    case 'b':
    {
        functionPointer = &goToSleep;
    }
     .......
}

void carryOutFunctions(functionPointer)
{
    while(....)
    {
        functionPointer;
    }
}

请原谅上述与函数指针问题无关的任何语法错误。

所以我的主要问题是:我怎样才能拥有一组具有不同 return 类型的函数指针,或者使一个函数指针指向具有不同 return 类型的函数?

这是不可能的,您不能拥有指向具有不同 return 类型的函数的函数指针,因为它们是不兼容的类型。在这种情况下,您可以尝试 returning void *,然后根据您的需要处理 return 值。

当然,这需要您在处理 returned 数据时非常小心。此技术的一个示例是在 pthread 中,您将函数指针传递给 pthread_create(),类型如下 void (*)(void *).

在您的情况下,如果函数 return void * 应该可以工作,请记住 void * 无需转换即可转换为任何指针类型。

您也可以使用 union 作为 return 类型的课程。