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

FCo

我了解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;
    }
}

请原谅以上所有与函数指针问题无关的语法错误。

因此,我的主要问题是:如何拥有一组具有不同返回类型的函数指针或使一个函数指针指向具有不同返回类型的函数?

伊哈罗布·阿西米(Iharob Al Asimi)

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

当然,这要求您在处理返回的数据时要非常小心。pthreads中的一个示例就是这种技术,您可以在其中传递pthread_create()具有以下类型的函数指针void (*)(void *)

在您的情况下,如果函数返回void *它应该可以工作,并且请记住,该函数void *可以转换为任何指针类型而无需强制转换。

当然,您也可以使用aunion作为返回类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有不同返回类型的函数指针

具有不同返回类型的C ++函数

Qt & C++:具有不同返回和参数类型的函数指针数组

C ++-17:将函数指针转换为具有不同参数指针类型的函数

C ++:具有不同类型参数的函数的函数指针向量

具有不同函数的函数指针数组的返回值(以C表示)

如何调用返回许多类型的不同函数指针的C函数?

存储具有不同类型的函数指针C ++ boost :: bind

C ++返回类型具有当前类类型的指针

C ++:按类型特征启用具有不同返回类型的函数

覆盖具有不同返回类型的遗留 C 函数的模板函数

我可以使用lambda指针数组来保存具有不同类型的参数/返回值的函数吗?

c - 如何从c中的单个函数返回具有不同数据类型的多个值

具有不同模板参数的函数返回类型

动态调用具有不同返回类型的同名函数

c可以声明两个具有相同名称,返回类型但参数不同的函数

具有相同名称和参数,不同返回类型的C ++成员函数

返回不同返回类型的函数的函数指针的函数

C-具有命名参数的函数指针类型

具有可变参数化和类型的C函数指针

如何从具有int和struct类型的指针的函数中解引用指针返回的地址?

具有不同通用参数的C#通用返回类型

在C ++中具有不同返回类型的重写方法

Java类具有2个具有相同函数签名但返回类型不同的方法

具有许多不同类型的C ++调用函数

函数C ++中具有返回类型大小的模板?

为什么我的gcc允许此空函数具有指针返回类型?

指针返回类型的函数

调用返回具有共享特征的不同类型并传递给其他函数的函数