为什么我会收到此错误?二进制表达式的无效操作数

问题描述 投票:0回答:1

我想检查 2 个结构体指针是否指向相同的值,但出现此错误:

./07ex.c:158:15:错误:二进制表达式的操作数无效(“RGB”(又名“struct RGB_”)和“RGB”) 返回 *x == *y; 这是结构体和函数:

typedef struct RGB_ {
    float r; 
    float g; 
    float b; 
} RGB;

bool point_to_equal_values_struct(RGB *x, RGB *y) {
    return *x == *y;
}

我通过这样做解决了这个问题:

bool point_to_equal_values_struct(RGB *x, RGB *y) {
    if ((*x).r == (*y).r && (*x).g == (*y).g && (*x).b == (*y).b)
    {
        return true;
    }       
    return false;
}

但是,我仍然很好奇为什么编译器会给出这个错误。 预先感谢!

c boolean-operations
1个回答
0
投票

==
运算符未定义用于结构体,因此无法直接比较两个结构体。

您需要像您一样比较相应的字段。在侧节点上,您可能希望使用

->
运算符来访问指针引用的结构的成员,因为它更易于阅读:

if (x->r == y->r && x->g == y->g && x->b == y->b)
© www.soinside.com 2019 - 2024. All rights reserved.