我经常发现需要编写返回函数指针的函数。每当我这样做时,我使用的基本格式是:
typedef int (*function_type)(int,int);
function_type getFunc()
{
function_type test;
test /* = ...*/;
return test;
}
然而,当处理大量函数时,这会变得很麻烦,所以我不想为每个函数(或每一类函数)声明一个 typedef
我可以删除 typedef 并将函数中返回的局部变量声明为:
int (*test)(int a, int b);
使函数体看起来像这样:
{
int (*test)(int a, int b);
test /* = ...*/;
return test;
}
但是我不知道要为函数的返回类型设置什么。 我试过:
int(*)(int,int) getFunc()
{
int (*test)(int a, int b);
test /* = ...*/;
return test;
}
但是报告语法错误。如何在不为函数指针声明 typedef 的情况下声明此类函数的返回类型。有可能吗?另请注意,我知道为每个函数声明 typedef 似乎会更清晰,但是,我非常小心地构建我的代码,使其尽可能清晰易懂。我想消除 typedef 的原因是它们通常只用于声明检索函数,因此在代码中显得多余。
最佳答案
int (*getFunc())(int, int) { … }
这提供了您要求的声明。此外,作为 ola1olsson注意,最好插入 void
:
int (*getFunc(void))(int, int) { … }
这表示 getFunc
可能不接受任何参数,这有助于避免错误,例如有人无意中编写了 getFunc(x, y)
而不是 getFunc( )(x, y)
.
关于c - 返回函数指针类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20617067/