gpt4 book ai didi

C中的循环函数指针问题

转载 作者:太空狗 更新时间:2023-10-29 17:08:28 24 4
gpt4 key购买 nike

我想弄清楚如何声明一个函数,该函数返回一个指向返回函数的函数的指针。这是一个循环问题,我不知道这是否可以在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com