相关疑难解决方法(0)

你如何在C中比较结构的相等性?

如何比较标准C中两个结构的实例是否相等?

c struct equality

202
推荐指数
5
解决办法
16万
查看次数

为什么C不提供结构比较?

正如大多数C程序员所知,你无法直接比较两种结构.

考虑:

void isequal(MY_STRUCT a, MY_STRUCT b)
{
    if (a == b)
    {
        puts("equal");
    }
    else
    {
        puts("not equal");
    }
 }
Run Code Online (Sandbox Code Playgroud)

a==b比较将AFAIK扔在任何合理的C语言编译器编译错误,因为C标准不允许内置结构比较.使用memcmp的变通方法当然是一个坏主意,因为对齐,打包,位域等,所以我们最终逐个元素比较函数.

另一方面,它允许结构分配,例如a = b完全合法.很明显,编译器可以相当简单地处理这个问题,为什么不进行比较呢?

我唯一的想法是结构分配可能与memcpy()非常接近,因为对齐等因素无关紧要.另一方面,比较可能更复杂.或者这是我缺少的东西?

显然,我知道通过元素比较做一个简单的元素不一定足够,例如,如果结构包含指向字符串的指针,但在某些情况下它会有用.

c

14
推荐指数
5
解决办法
7307
查看次数

标签 统计

c ×2

equality ×1

struct ×1