C中具有不同定义的相同名称结构

Anu*_*shi 12 c typedef structure

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

FILE1.C

typedef struct
{
    unsigned int unVar;             

} abc;
Run Code Online (Sandbox Code Playgroud)

file2.c中

typedef struct
{
    int var;
} abc;
Run Code Online (Sandbox Code Playgroud)

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

250*_*501 15

6.7.2.1结构和联合说明符

  1. struct-or-union-specifier中struct-declaration-list的存在在转换单元中声明了一个新类型.

类型仅在翻译单元中定义,在这种情况下是.c文件.

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

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