C의 "익명 구조"표준입니까? 자세한 분석
소개
C의 "익명 구조"개념은 표준화와 정확한 특성에 대한 의문을 제기했습니다. 이 기사는 관련 문서를 검토하고 다양한 유형의 익명 구조 간의 미묘한 차이점을 탐색하여 이러한 문제를 명확히하는 것을 목표로합니다. Microsoft의 MSDN 문서, 익명 구조 (이름없이 정의 된 구조)는 c에서 비표준으로 간주됩니다. 그러나 ISO C 표준은이 측면을 명시 적으로 다루지 않습니다.
익명 구조 이해
이름이없는 structs :
C 표준 허용 허용 이름이없는 스트러크 (이름없는 스트러크) 선언을 위해, 인스턴스화되고 일반 명명으로 사용할 수 있습니다. structs.
익명 스트러크는 일부 C 컴파일러 (예 : GCC 및 Visual C)의 특정 기능을 나타냅니다. 포함 객체.
키 구별은 회원의 접근성에 있습니다. 이름이없는 스트러크의 경우, 멤버는 표준 도트 연산자 (예 : foo.bar)를 통해 액세스 할 수있는 반면, 익명의 스트러크는 구조물 이름 (예 : foo.hi)을 지정하지 않고 직접 멤버에 액세스 할 수 있습니다. &&] 표준 대 표준 대
표준은 이름없는 스트러크의 기능을 정의하지만 그렇지 않습니다. 특히 회원에게 직접 접근하는 "익명"행동. 따라서 후자는 특정 컴파일러가 지원하는 비표준 기능으로 간주됩니다. &&] 구조 foo { 구조 { int 안녕하세요; int bye; } 술집; };
비표준 익명 구조 :
struct foo { 구조 { int 안녕하세요; int bye; }; // 두 번째 예에서는 멤버에 직접 액세스 할 수 있습니다 :
f.hi = 3; // 비표준, 컴파일러에 따른 기능
struct Foo { struct { int hi; int bye; } bar; };
struct Foo { struct { int hi; int bye; }; //
struct Foo { struct { int hi; int bye; }; //
![]()
특정 C 컴파일러가 지원하는 표준 기능. 표준 C는 이름이없는 스트러크의 기능을 제공하지만 멤버의 직접적인 접근성은 지정되지 않았으며 지원되지 않습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3