struct Flat {
int a1;
int a2;
}
// a hierarchical struct which containing a struct attribute
struct NonFlat {
Flat b1;
int b2;
}
Flat f1, f2;
memcmp (&f1, &f2, sizeof f1)
그것이memcmp가 non-flat 구조체에서 작동합니까? 제 컴파일러
f1.a1 의미 작동 == f2.a1, f1.a2 == f2.a2 < => memcmp는 (F1, F2) == 0;
NonFlat n1, n2;
memcmp (&n1, &n2, sizeof n1) // does it also work for non-flat structs, considering the padding?
또한 NonFlat 구조체에서도 작동해야한다고 가정합니다. 그러나, 내 컴파일러에서 평평하지 않은 구조체의 경우 멤버 특성이 동일하더라도 memcmp의 결과가 다르다는 것을 나타냅니다.
"그것이 효과가있다"는 것은 그것이 당신이 생각하는 것을 의미하지는 않습니다. –
귀하의 구조는 꽤 평평 해 보입니다. – juanchopanza
컴포지션을 사용할 때 구조가 "평면"입니다. 집계를 사용할 때 그렇지 않습니다. 당신의'Flat'과'NonFlat' 구조는 모두 합성을 사용하고 있기 때문에 "평평"합니다. –