繁体   English   中英

c类型等价的编译器

[英]Compiler of c type equivalence

在C语言中,如果我们有:

typedef int a[100];
typedef int b[200];

那么类型a和b是等价的吗? 据我所知,C使用名称等价,但我很困惑。

在您的示例中, aint[100]类型的别名, bint[200]类型的别名。 这两种类型不相同,因为数组的大小是其类型的一部分,不同的大小意味着不同的类型。

如果第二行是typedef int b[100]; ab是等价的。

据我所知,C使用名称等价

结构和联合在名义上是键入的,如果你有两个标记为A和B的结构(或联合)类型,它们具有完全相同的主体,它们仍然被认为是不同的类型。 因此,如果变量具有类型struct A ,则无法在不首先转换struct B情况下为其分配struct B

对于typedef ,情况并非如此,因为它只是别名。 所以如果你有两个typedef typedef X a; typedef X b; typedef X a; typedef X b; 那么Xab都是无法区分的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM