"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C ++ 표준의 익명 구조가 준수됩니까?

C ++ 표준의 익명 구조가 준수됩니까?

2025-02-26에 게시되었습니다
검색:681

Are Anonymous Structures in C   Standard Compliant?

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;
   }; //  

Are Anonymous Structures in C   Standard Compliant?

특정 C 컴파일러가 지원하는 표준 기능. 표준 C는 이름이없는 스트러크의 기능을 제공하지만 멤버의 직접적인 접근성은 지정되지 않았으며 지원되지 않습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3