typedef结构对自身的影响是什么?

时间:2013-07-07 19:59:11

标签: c++ c struct

我已经看到这个代码写在API的顶部:

typedef struct SYSTEM SYSTEM;

类型SYSTEM之前未定义。有谁知道这是做什么的?编译器在此行之后认为SYSTEM是什么意思?

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

2 个答案:

答案 0 :(得分:4)

这实际上只在C中有效且有用。

在C中,您必须输入struct type,而C ++允许您省略该类型的struct部分,只需编写type

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

有些C程序员认为这种做法很糟糕,而且更喜欢写struct type。只是想把它放在那里。


您没有收到任何错误的原因是因为该行充当struct SYSTEM的前向声明,可能存在也可能不存在。 typedef所做的就是告诉编译器,当你说X时,你的意思是Y

答案 1 :(得分:3)

它允许您在C中使用名称SYSTEM而不是struct SYSTEMtypedefSYSTEM创建了同义词struct SYSTEM

在您未声明struct SYSTEM的情况下,声明还将struct SYSTEM声明为不完整类型,如此声明:struct SYSTEM;

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