HOWTO · C++

C++ 익명 구조체

이 자습서에서는 C++에서 익명 구조체를 사용하는 방법을 보여줍니다.

이 자습서에서는 C++에서 익명 구조체를 사용하는 방법을 보여줍니다.

C++의 익명 구조체

익명 구조체는 C 언어에서도 지원되지 않았기 때문에 C++에서 지원되지 않지만 C++는 C와 달리 익명 공용체를 지원합니다. 구조체 및 공용체에 대한 ANSI C 및 C++ 표준에 따르면:

  1. ANSI C++ 익명 공용체: 지원됨
  2. ANSI C++ 익명 구조체: 지원되지 않음
  3. ANSI C 익명 공용체: 지원됨
  4. ANSI C 익명 구조체: 지원되지 않음

C++는 익명 구조체를 지원하지 않습니다. 왜냐하면 C는 호환성에 필요한 익명 구조체를 지원하지 않기 때문입니다. C++에서는 익명 구조체를 사용하지 않지만 몇 가지 대안을 제공합니다.

예를 들어 아래 코드를 참조하십시오.

struct DemoVector {
  float v[3];
  float &operator[](int x) { return v[x]; }

  float &a() { return v[0]; }
  float &b() { return v[1]; }
  float &c() { return v[2]; }
};

위의 코드는 익명 구조체와 유사한 사용자 정의 유형에 대한 기능을 제공합니다. C++의 공용체를 사용하여 비슷한 작업을 수행할 수 있습니다.

아래 코드를 참조하십시오.

union DemoVector {
  struct {
    float a, b, c;
  };
  float v[3];
};

익명 구조체는 이제 ISO C11, gcc 및 Apple의 llvm에서 허용되지만 ISO C++11에서는 지원되지 않습니다.