Tag: 类型系统

兼容类型并忽略C类型系统中的顶级限定符

这是一个多部分的问题。 我一直在努力了解C型系统。 首先,C标准提到了“兼容类型”一词,所以我试图理解这一点。 这个定义似乎很分散,但我发现: 6.2.7兼容类型和复合类型1如果类型相同,则两种类型具有兼容类型。 确定两种类型是否兼容的附加规则在6.7.2中描述了类型说明符,在6.7.3中描述了类型限定符,在6.7.6中描述了声明符.55)此外,两个结构,联合或枚举类型在单独声明如果翻译单元的标签和成员满足以下要求,则它们是兼容的:如果使用标签声明一个,则另一个应使用相同的标签声明。 如果两者都在各自的翻译单元内的任何地方完成,那么以下附加要求适用:其成员之间应存在一对一的对应关系,以便每对相应的成员被宣布为兼容类型; 如果使用对齐说明符声明该对中的一个成员,则使用等效的对齐说明符声明另一个成员; 如果该对的一个成员使用名称声明,则另一个成员使用相同的名称声明。 对于两个结构,相应的成员应按相同的顺序声明。 对于两个结构或联合,相应的位域应具有相同的宽度。 对于两个枚举,相应的成员应具有相同的值。 REFS: 6.7.2 short == short int == signed short == signed short int, etc. 6.7.3 10) For two qualified types to be compatible, both shall have the identically qualified version of a compatible type; the order of type qualifiers within a list of […]