C – 限制结构范围
我在.c文件中有这个结构:
struct entry { int position; int length; struct entry *node; };
现在,我如何将此结构布局的范围限制为主机文件,以便在另一个文件中为新结构布局使用相同名称时,我不会收到“重新定义”错误?
我尝试在struct之前使用static ,但似乎没用(我也没有意义)。 顺便说一句, 这个问题对我来说似乎没有用,因为我在链接文件中复制stuct条目时会遇到“重新定义”错误(使用MinGW)。
—编辑—
对于那些想要了解更多的人: 这里和这里 。
您不会得到重新定义错误。 类型是翻译单元的本地类型,并且没有任何可见性。 只有函数和数据对象具有可见性。
如果您收到重新定义错误,则必须在标题或其他包含文件中使用该名称,以使其最终位于同一个翻译单元中。
听起来你想让struct entry
在不同的文件中意味着不同的东西。 没关系:只需将用于定义每个版本结构的代码放在不同的.c
文件中,并确保永远不要包含来自另一个c文件的ac文件或包含头文件中的ac文件。
每个翻译单元中只应存在一个结构定义。