C – 限制结构范围

我在.c文件中有这个结构:

struct entry { int position; int length; struct entry *node; }; 

现在,我如何将此结构布局的范围限制为主机文件,以便在另一个文件中为新结构布局使用相同名称时,我不会收到“重新定义”错误?

我尝试在struct之前使用static ,但似乎没用(我也没有意义)。 顺便说一句, 这个问题对我来说似乎没有用,因为我在链接文件中复制stuct条目时会遇到“重新定义”错误(使用MinGW)。

—编辑—
对于那些想要了解更多的人: 这里和这里 。

您不会得到重新定义错误。 类型是翻译单元的本地类型,并且没有任何可见性。 只有函数和数据对象具有可见性。

如果您收到重新定义错误,则必须在标题或其他包含文件中使用该名称,以使其最终位于同一个翻译单元中。

听起来你想让struct entry在不同的文件中意味着不同的东西。 没关系:只需将用于定义每个版本结构的代码放在不同的.c文件中,并确保永远不要包含来自另一个c文件的ac文件或包含头文件中的ac文件。

每个翻译单元中只应存在一个结构定义。