c - 返回函数指针类型

标签 c syntax types function-pointers

我经常发现需要编写返回函数指针的函数。每当我这样做时,我使用的基本格式是:

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/

相关文章:

C,通过标记字符串填充二维数组

c++ - time.h clock() 在我的硬件上坏了吗?

html - 对 HTML 属性使用单引号是否正确?

java - 外国语法 - 需要帮助理解

python - 为什么 python 允许没有 "pass"语句的空函数(带有文档字符串)主体?

c++ - Opencv 数据类型定义

python - TensorFlow 中的显式与隐式类型定义

c - 二维莫顿码64bits解码功能

c++ - 为什么 ncurses 的 start_color() 会使常规文本变暗?

java - 根据继承类型重新初始化变量