c - C中不同定义的同名结构

标签 c structure typedef

是否允许在同一项目的 2 个不同的 c 文件中使用具有不同定义的相同名称结构。例如。

文件1.c

typedef struct
{
    unsigned int unVar;             

} abc;

文件2.c

typedef struct
{
    int var;
} abc;

abc 用于两个文件中。当我将这些文件编译为同一项目的一部分时,没有错误,但我想了解这是否是正确的用法。

最佳答案

6.7.2.1 Structure and union specifiers

  1. The presence of a struct-declaration-list in a struct-or-union-specifier declares a new type, within a translation unit.

类型仅在翻译单元中定义,在本例中为 .c 文件。

在两个不同的翻译单元中定义两个具有相同名称的类型是没有问题的。

然而,这两种类型不兼容,除非它们遵循 6.2.7., p1 中描述的规则。您定义的类型不兼容

关于c - C中不同定义的同名结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35034277/

相关文章:

c - 指针通过堆栈传递时变为空

C结构代码编译但未运行

c - 如何将一个结构指向另一个

c - SIGSEGV 在 C 中运行函数时出错

c++ - 类模板中的 Typedef 指针

c - fork child 还是线程?

c - Redis:数据以换行符开头时的SET命令

c - 一个进程中放置多少个线程

c - 箭头运算符与点运算符

c++ - 模板的成员 typedef 在 VS 而非 GCC 中用于参数未声明的标识符