c类型等价的编译器

前端之家收集整理的这篇文章主要介绍了c类型等价的编译器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在C语言中,如果我们有:
typedef int a[100];
typedef int b[200];

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

解决方法

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

如果第二行是typedef int b [100] ;,则a和b是等价的.

As far as i know C uses name equivalence

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

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

猜你在找的C&C++相关文章