1

C中是否存在结构类型等价?

4

3 回答 3

3

严格来说,不——不同命名的类型是不同的类型,即使类型的结构是相同的。(当然,atypedef只是为现有类型引入了一个替代名称;这些类型是相同的类型。)

然而,在实践中,有许多特技是你可以摆脱的。但严格来说,他们是在作弊。使用 void 指针是颠覆系统的一种方式;另一个不使用函数的原型声明;可变长度参数列表可以是另一个。

于 2011-01-29T07:29:25.700 回答
0

如果您问是否可以比较两个struct是否相等,答案是否定的。只有赋值,您可以从函数返回结构。

于 2011-01-29T07:38:32.013 回答
-2

C 中没有比较两个结构的运算符,您可以使用 memcmp 代替:

if( memcmp( &structvar1, &structvar2, sizeof structvar1 ) )
  puts("not equal");
else
  puts("equal");
于 2011-01-29T08:16:16.063 回答