C - 限制结构范围

标签 c struct scope

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

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

现在,我怎样才能将这个结构 layout 的范围限制在主机文件中,这样当在另一个文件中为新结构 layout 使用相同的名称时,我没有收到“重新定义”错误?

我试过在struct之前使用static,但似乎没有用(我也说不通)。顺便说一句,this question对我来说似乎无效,因为在跨链接文件(使用 MinGW)复制 结构条目 时出现“重新定义”错误。

--- 编辑---
对于那些想了解更多的人:here , 和 here .

最佳答案

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

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

关于C - 限制结构范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158888/

相关文章:

c - 随机数生成-未声明的标识符

c - 如何修复 C 中字符串数组的二分搜索

c - 递减渐近时间复杂度

c++ - 为什么缺少/未声明 MonitorFromWindow? (C++/WinAPI)

c - 九九乘法表问题

c - 使用包含多个元素的结构的 malloc

c - 从指针到指针的访问值

c++ - 为什么打包结构的大小在这里是 5 而不是 4 字节?

servlets - 在 Vaadin 14 应用程序中将 `UI` 对象范围状态存储在哪里?

javascript - 理解 React 中 array.map() 范围的问题