6

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

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

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

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

--- 编辑 ---
对于那些想了解更多的人:这里这里

4

2 回答 2

8

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

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

于 2012-06-22T15:10:37.890 回答
2

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

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

于 2012-06-22T15:11:49.343 回答