如何解决用C语言递归声明函数
| 收到adream307的问题,我不知道,你呢? 我想声明一个这样的函数: (我们将此功能类型命名为F) F的返回类型为\“ void \” F的参数是一个函数指针,该指针指向一个 类型与F相同的函数 我可以声明这样的功能吗?解决方法
你不能。该类型无法表达,因为它会重复自身:
void f(void g(void h(...
但是您可以编写一个可以接受自身的函数,而不会出现任何问题。考虑
void f(void g()) { }
int main(void) { f(f); }
很好。 f
的参数类型是一个函数指针(void g()
在此等同于void (*g)()
),其类型与f
的类型兼容。 f
的参数和调用中argument7ѭ和void (void())
的函数类型的兼容性规则指定为:
如果一种类型具有参数类型列表[调用参数],而另一种类型由不属于函数定义一部分且包含空标识符列表[函数参数类型]的函数声明符指定,则参数列表不应有一个省略号终止符,每个参数的类型应与应用默认参数提升的结果类型兼容。
两种类型都满足此兼容性规则,因此函数调用已定义良好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。