是否允许在同一项目的 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
- 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/