C中的循环函数指针问题

Ken*_*eth 7 c pointers function

我试图找出如何声明一个函数,该函数返回一个返回函数的函数的指针.这是一个循环问题,我不知道这是否可以在c中完成.这是我正在尝试做的一个说明性示例(它不起作用):

typedef (*)(void) (*fp)(void);

fp funkA(void) {
    return funkB;
}

fp funkB(void) {
    return funkA;
}
Run Code Online (Sandbox Code Playgroud)

caf*_*caf 6

要在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 };
}
Run Code Online (Sandbox Code Playgroud)

在C89中,您没有复合文字,因此您必须:

fpc funkA(void) {
    fpc rv = { funkB };
    return rv;
}

fpc funkB(void) {
    fpc rv = { funkA };
    return rv;    
}
Run Code Online (Sandbox Code Playgroud)