gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 00:55:05 26 4
gpt4 key购买 nike

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

我有一个 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 *无需强制转换即可转换为任何指针类型。

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

关于c - 具有不同返回类型的函数指针 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28563015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com