在C语言中,如果我们有以下代码:
typedef int a[100];
typedef int b[200];
那么类型a和b是等效的吗?据我所知,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
将是等价的。struct A
,则必须先转换才能将其赋值给struct B
。typedef
,情况并非如此,它们只是别名。因此,如果您有两个typedefs typedef X a; typedef X b;
,那么X
、a
和b
彼此都是不可区分的。
sizeof
... - Eugene Sh.typeof()
(如果支持)可能是一个更好的选择。 - tofro