关于c ++:typedef结构对自身的影响是什么?

What is the effect of typedef'ing a struct to itself?

本问题已经有最佳答案,请猛点这里访问。

我见过这个代码写在API的顶部:

1
typedef struct SYSTEM SYSTEM;

类型SYSTEM以前未定义。有人知道这是什么吗?在这行之后,编译器认为SYSTEM是什么?

谢谢你的回答!我的问题是系统以前没有在文件中定义,所以我不知道它是什么。例如,该行将自行编译,但没有在任何地方定义struct SYSTEM


这只在C语言中有效和有用。

在C中,您必须键入EDCOX1×9Ω,而C++允许您省略EDCOX1×10的一部分类型,只写EDCOX1×11Ω。

typedef struct type type允许您在C中使用type,而不必在结构名称之前使用struct关键字。

不过,有些C程序员认为这是一种糟糕的做法,他们更喜欢编写struct type。只是想把它放在外面。

您没有收到任何错误的原因是该行充当可能存在或可能不存在的EDOCX1[1]的转发声明。typedef所做的只是告诉编译器,当你说X时,你的意思是Y


它允许您在C中使用名称SYSTEM,而不是使用struct SYSTEMtypedef创建了SYSTEMstruct SYSTEM的同义词。

在您的情况下,由于struct SYSTEM未声明,声明还声明struct SYSTEM为不完整类型,如本声明中所述:struct SYSTEM;

完整的对象类型struct SYSTEM可以在另一个翻译单元中声明。