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

时间:2011-01-29 07:21:52

标签: c equivalence

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:-2)

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

if( memcmp( &structvar1, &structvar2, sizeof structvar1 ) )
  puts("not equal");
else
  puts("equal");