gpt4 book ai didi

C 结构格式/别名

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:44 25 4
gpt4 key购买 nike

我是 C 的初学者,我在头文件中遇到了一些代码,但我不确定它使用的是什么样式以及它的含义。

typedef struct tActiveObject *testActiveObjectPtr;

typedef struct tActiveObject {
ActiveObject ao;
int state;
} testActiveObject, *testActiveObjectPtr;

为什么我们需要创建一个指针作为别名,即 testActiveObject*testActiveObjectPtr?这只是一些我不知道的 C 风格吗?

谢谢。

最佳答案

如果这两个 typedef 出现在同一个头文件中,那么代码就没有任何意义。在那种情况下,第一个 typedef 是完全多余的,整个代码可以替换为

typedef struct {
ActiveObject ao;
int state;
} testActiveObject, *testActiveObjectPtr;

否则,如果 typedef 位于不同的文件中,代码可能会尝试创建指向不完整类型 的指针,但它看起来并非如此。 struct 标签是多余的,但闻起来也像是创建自引用结构的失败尝试。

此外,良好的编程习惯要求您永远不要将指针隐藏在 typedef 后面。

所以看起来整个代码是由一个相当困惑的人创建的,他们不太清楚自己在做什么。如果可能,扔掉代码并将其替换为:

typedef struct {
ActiveObject ao;
int state;
} testActiveObject,

...

testActiveObject* ptr; // whenever you need a pointer to this type

关于C 结构格式/别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28954908/

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