c - 返回指向返回相同类型的函数的函数指针

标签 c function-pointers

<分区>

在 C 中,我如何声明一个函数,该函数返回一个函数,该函数返回一个函数等。 即,我想要这样的东西

typedef A (*A)();
A a = ...
a()()()()();

我想实现以下 C++ 行为:

struct A { A operator()() { return A(); } };
A a;
a()()()()();

最佳答案

您不能在 C 中返回一个函数 - 您返回一个指向函数的指针。如果您打算定义一个函数,该函数返回一个指向函数的指针,该函数又返回一个指向函数的指针等等,那么您可以使用 typedef 来实现它。

typedef int (*f)(int);
typedef f (*g)(float);
typedef g (*h)(char);

// and so on

但是,如果您打算定义一个返回指向其自身类型的函数的指针的函数,那么您不能这样做,因为您不能在 C 中定义递归类型。详情请看这里 - Function Returning Itself

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

相关文章:

c - C 中的混淆代码

types - Go中函数变量的类型

c++ - 如何解决重载成员函数问题的地址?

C、函数格式化中的结构指针

c++ - C/C++ 中的可移植无符号长整型

c - 汇编程序中的循环迭代不正确

c - 如何使用alloca分配C函数指针?

c++ - 每个运行时函数的地址是否更改

c++ - 线程中的成员函数指针

c - 整数转换排名和提升