我经常发现有必要编写返回函数指针的函数。每当我使用时,我使用的基本格式是:
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)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句