HOWTO · C++
C++ 익명 구조체
이 자습서에서는 C++에서 익명 구조체를 사용하는 방법을 보여줍니다.
이 자습서에서는 C++에서 익명 구조체를 사용하는 방법을 보여줍니다.
C++의 익명 구조체
익명 구조체는 C 언어에서도 지원되지 않았기 때문에 C++에서 지원되지 않지만 C++는 C와 달리 익명 공용체를 지원합니다. 구조체 및 공용체에 대한 ANSI C 및 C++ 표준에 따르면:
- ANSI C++ 익명 공용체: 지원됨
- ANSI C++ 익명 구조체: 지원되지 않음
- ANSI C 익명 공용체: 지원됨
- 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에서는 지원되지 않습니다.