我想弄清楚如何声明一个函数,该函数返回一个指向返回函数的函数的指针。这是一个循环问题,我不知道这是否可以在 c 中完成。这是我正在尝试做的一个说明性示例(它不起作用):
typedef (*)(void) (*fp)(void);
fp funkA(void) {
return funkB;
}
fp funkB(void) {
return funkA;
}
最佳答案
要在C语言中创建像这样的完全循环类型,必须使用struct
(或union
)。在 C99 中:
typedef struct fpc {
struct fpc (*fp)(void);
} fpc;
fpc funkB(void);
fpc funkA(void) {
return (fpc){ funkB };
}
fpc funkB(void) {
return (fpc){ funkA };
}
在 C89 中,您没有复合文字,因此您必须执行以下操作:
fpc funkA(void) {
fpc rv = { funkB };
return rv;
}
fpc funkB(void) {
fpc rv = { funkA };
return rv;
}
关于C中的循环函数指针问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6786810/