익명 공용 구조체
익명 공용 구조체는 클래스 이름 또는 선언자 목록 없이 선언되는 공용 구조체입니다.
union { member-list }
설명
이러한 공용 구조체 선언에서는 형식이 아닌 개체를 선언합니다. 익명 공용 구조체에 선언된 이름이 같은 범위에 선언된 다른 이름과 충돌해서는 안 됩니다.
C에서 익명 공용 구조체는 태그를 포함할 수 있지만 선언자는 포함할 수 없습니다.
익명 공용 구조체에 선언된 이름은 비멤버 변수처럼 직접 사용됩니다.
익명 공용 구조체에는 공용 구조체 멤버 데이터에 나와 있는 제한 이외에 다음 제한이 추가로 적용됩니다.
파일 범위에서 선언하는 경우 정적으로 선언해야 합니다. 로컬 범위에서 선언하는 경우에는 정적 또는 자동이어야 합니다.
익명 공용 구조체에는 공용 멤버만 포함할 수 있으며 전용 및 보호된 멤버를 포함하면 오류가 생성됩니다.
함수 멤버를 포함할 수 없습니다.
참고
단순히 구문에서 클래스 이름 부분을 생략한다고 해서 공용 구조체가 익명 공용 구조체가 되지는 않습니다.공용 구조체가 익명 공용 구조체가 되려면 해당 선언에서 개체를 선언하지 않아야 합니다.
예제
// anonymous_unions.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main() {
union {
int d;
char *f;
};
d = 4;
cout << d << endl;
f = "inside of union";
cout << f << endl;
}