gpt4 book ai didi

c - 函数指针的奇怪 typedef

转载 作者:太空狗 更新时间:2023-10-29 15:33:20 26 4
gpt4 key购买 nike

我正在使用别人编写的代码,他们打算在其中使用函数指针。他们做了一个我无法理解的非常奇怪的 typdef。代码下方

typedef void (myType)(void);
typedef myType *myTypePtr;

我可以理解 myTypePtr 的主要思想是创建一个“指向接收 void 并返回 void 的函数的指针。但是原始的 myType 呢?什么是吗?函数类型?我不清楚。

而且后面还有这个函数原型(prototype)

int createData(int id,int *initInfo, myTypePtr startAddress)

但是我收到编译错误“expected declaration specifiers or '...' before 'myTypePtr' any idea why this is happening?。非常感谢。

最佳答案

这第一个 typedef

typedef void (myType)(void);

提供 myType 作为类型 void (void) 的同义词,函数类型不接受任何参数并返回 voidmyType 两边的括号在这里实际上不是必需的;你也可以写

typedef void myType(void);

为了更清楚地说明它是接受 void 并返回 void 的函数类型。请注意,您实际上不能声明任何函数类型的变量;在 C 中获取函数类型对象的唯一方法是定义一个实际的函数。

第二个typedef

typedef myType *myTypePtr;

然后说 myTypePtr 的类型等于指向 myType 的指针,这意味着它是指向不带参数并返回 的函数的指针>无效。这个新类型等同于 void (*)(void) 类型,但有点间接。

至于你的第二个错误,我不能在没有更多上下文的情况下确定是怎么回事。请发布一个最小的测试用例,以便我们了解导致错误的原因。

希望这对您有所帮助!

关于c - 函数指针的奇怪 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11584377/

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