我想检查 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;
}
但是,我仍然很好奇为什么编译器会给出这个错误。 预先感谢!
==
运算符未定义用于结构体,因此无法直接比较两个结构体。
您需要像您一样比较相应的字段。在侧节点上,您可能希望使用
->
运算符来访问指针引用的结构的成员,因为它更易于阅读:
if (x->r == y->r && x->g == y->g && x->b == y->b)