조건부 구문 내부에서 구조체 변수를 전체적으로 평가하여 각 요소를 쓸 필요가없는 방법이 있습니까? 예를 들어 다음과 같은 구조체를 제공 :C에서 조건문 내부의 구조체 계산
typdef struct
{
int a;
int b;
int c;
} number;
number foo = {1, 2, 3};
내가의 요소를 평가하고자
if 문 같은 경우 :
if (foo.a == 1 && foo.b == 2 && foo.c == 3)
{
...
}
그러나, 나는 개별 요소를 나열 할 필요없이 전체 구조체를 평가할 . 이것이 올바르지 않다는 것을 알고 있지만 이것은 내가 성취하고자하는 바를 따르고 있습니다.
if (foo == {1, 2, 3})
{
...
}
귀하의 도움을 크게 받으실 수 있습니다. 감사.
와우, 이제 당신이 내 마음을 읽고 있다고 생각합니다. 그러나 패딩은 구현체에 의해 정의되지만 동일한 구조체의 인스턴스 간에는 변경되지 않습니다. 편집 : 스크래치, 내가 잘못 읽었습니다. – Quentin
도움 주셔서 감사합니다 Andrey. 구조체는 "__attribute __ ((__ packed__))"을 통해 압축됩니다. 그렇다면 복합 리터럴이 memcmp에서 사용하기 위해 압축 된 속성을 따르는 것을 어떻게 보장 할 수 있습니까? – void
@quant : 모든 컴파일러에서 속성은 struct * type *에 적용되며 특정 객체에는 적용되지 않습니다. 이렇게하면 복합체 리터럴을 통해 생성 된 것을 포함하여 해당 구조체 유형의 모든 * 객체가 동일하게 패킹되고 팩됩니다. – AnT