반응형
구조물을 직접 할당할 수 없는 이유는 무엇입니까?
태그가 있는 완전한 구조가 있다고 가정합니다.MyStruct
, 라고 가정해 보겠습니다.x, y, ..., z
필드에 허용되는 값입니다.왜가.
struct MyStruct q = {x,y,..,z};
허용되긴 하지만
struct MyStruct q;
q = {x,y,...,z};
안되나요?저는 이게 굉장히 짜증나쁘다고 생각합니다.두 번째 경우는, 제가 앞서 선언한 바와 같이q
, 각 필드에 하나씩 값을 할당해야 합니다.
q.X = x; q.Y = y; ... q.Z = z;
어디에X, Y, ..., Z
의 분야입니다.MyStruct
. 이게 무슨 이유가 있는 겁니까?
당신이 찾고 있는 것은 복합적인 문자입니다.이것은 C99에서 언어에 추가되었습니다.
첫 번째 사례:
struct MyStruct q = {x,y,..,z};
는 초기화에 특화된 구문입니다.두번째 경우는, 언어의 소아성애에서 초기화가 아니라 과제입니다.과제의 오른쪽은 올바른 유형의 구조여야 합니다.C99 이전에는 언어에 구조 리터럴을 쓰는 구문이 없었는데, 이것이 당신이 하려는 것입니다.{x,y,...,z}은(는) 안에 표정이 있는 블록처럼 보였습니다.만약 어떤 사람이 그것을 문자적 가치로 생각하도록 영감을 받았다면, 비록 언어가 그렇지 않았지만, 그것의 종류를 확신할 수 없었습니다.(당신의 상황에서 당신은 좋은 추측을 할 수 있을 것입니다.
이를 허용하고 유형 문제를 해결하기 위해 C99는 다음과 같이 쓸 수 있도록 구문을 추가했습니다.
q = (struct MyStruct){x,y,...,z};
이렇게 할 수 있지만 Aggregate 이전에 구조 유형을 제공해야 합니다.
struct MyStruct q;
q = (struct MyStruct){x,y,...,z};
언급URL : https://stackoverflow.com/questions/12189480/why-structs-cannot-be-assigned-directly
반응형
'programing' 카테고리의 다른 글
libxml2 라이브러리에서 함수 xmlCheckVersion을 찾을 수 없습니다.pip을 통해 lxml을 설치할 때 libxml2가 설치되어 있습니까? (0) | 2023.10.20 |
---|---|
PSC Credential을 파일에 저장합니다. (0) | 2023.10.20 |
시퀀스 포인트 간에 휘발성 변수를 여러 번 읽을 수 있습니까? (0) | 2023.10.20 |
레프트 아우터가 라라벨과 합류하는 방법은? (0) | 2023.10.20 |
jQuery Validation Plugin을 사용하여 양식이 프로그래밍적으로 유효한지 확인하는 방법 (0) | 2023.10.20 |