【问题标题】:ANSI C - can a function returns another function?ANSI C - 一个函数可以返回另一个函数吗?
【发布时间】:2015-08-28 10:54:11
【问题描述】:

我想调用一个函数,这个函数进行一些计算并返回另一个函数指针。在不创建 enum 函数类型的情况下,这是否可能在 ANSI C 中实现?如果是这样,我该如何声明该函数?

【问题讨论】:

  • 你想从另一个函数返回一个'function pointer'
  • 是的,类似 [code] void (*anotherFunc) myFunc(int a) { if(a

标签: function ansi-c


【解决方案1】:

您可能希望返回指向另一个函数的指针。指针的语法类似于void (*myFuncPtr)(int),其中 myFuncPtr 是变量名。很可能您想创建一个 typedef 以不一直键入它。一个最小的例子:

#include <stdio.h>

typedef int (*PUTS_PTR)(const char*);

PUTS_PTR ret_puts () {
    return puts;
}

int main () {
    PUTS_PTR pFunc = ret_puts();
    (*pFunc)("Hello");
}

您也可以像pFunc("Hello") 一样编写函数指针调用,而不是(*pFunc)("Hello");。但在第二种语法中,您忘记初始化或检查指针的可能性较小。

【讨论】:

  • 这就是我想要的,当然是以不同的方式。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多