[英]Compiler of c type equivalence
在C语言中,如果我们有:
typedef int a[100];
typedef int b[200];
那么类型a和b是等价的吗? 据我所知,C使用名称等价,但我很困惑。
在您的示例中, a
是int[100]
类型的别名, b
是int[200]
类型的别名。 这两种类型不相同,因为数组的大小是其类型的一部分,不同的大小意味着不同的类型。
如果第二行是typedef int b[100];
, a
和b
是等价的。
据我所知,C使用名称等价
结构和联合在名义上是键入的,如果你有两个标记为A和B的结构(或联合)类型,它们具有完全相同的主体,它们仍然被认为是不同的类型。 因此,如果变量具有类型struct A
,则无法在不首先转换struct B
情况下为其分配struct B
对于typedef
,情况并非如此,因为它只是别名。 所以如果你有两个typedef typedef X a; typedef X b;
typedef X a; typedef X b;
那么X
, a
和b
都是无法区分的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.