繁体   English   中英

C-函数返回指向函数的指针

[英]C - function returning pointer to function

函数返回指向另一个函数的指针的正确C语法是什么(它又可能返回指向某个函数的指针,等等)? 我知道我们可以将一个函数定义为另一个函数内部的局部变量(但是我们需要知道地址,否则它是无用的):

int*(*a)(int) = (void*)0;

这是局部变量a ,它表示一个具有int作为参数的函数,并返回指向int指针,而该函数的地址为0 我怎样才能有一个函数,而不是指向int的指针,而是返回一个需要将char作为参数的函数的指针,并返回一个指向int的指针? 这是我尝试过的:

int*(*)(char)(*a)(int) = (void*)0;

但是,这是一个语法错误。 有没有办法做到这一点,或者也许唯一的办法就是返回void*然后再将其强制转换为函数?

编辑

我不仅在寻找可行的解决方案。 我知道可以使用typedef或仅通过返回通用指针然后将其转换为另一个函数来完成。 但是,我正在为C写一个代码突出显示工具,并且我想介绍一下ISO C定义的所有情况,所以我想知道ISO C是否允许双返回函数,如果可以,正确的语法是什么,如果不能,可以吗?可以在文档中找到?

您可以使用typedefs简化此过程(并确保一周后可以真正理解代码):

typedef int*(*FuncA)(int);
typedef FuncA(*FuncB)();

FuncB a = (void*)0;

显然使用的描述性名称要比我在此使用的描述性名称更多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM