(1 예처럼 명시 적 definitios없이 정의되어 보이는) :C 문제는 내가 구조체 만든
typedef struct
{
short s;
int i;
struct Ss
{
short s;
};
} S;
나는 오류 (VS2012)가 : 내가 볼
error C2020: 's' : 'struct' member redefinition
을 이름 "s"가 사용되지만 중첩 된 이름의 struct에 있으므로 문제가되지 않아야합니다. C11에서 intonymized 구조체와 공용체가 있지만 제 경우에는 익명이 아니며 C11을 지원하지 않는 VS2012가 있다는 것을 알고 있습니다.
또 다른 흥미로운 예는 다음과 같습니다 VS2008를 sizeof (A)에 24 =하지만 난 단지 1 개 필드가 정의되어 있습니다
typedef struct
{
short s;
union U
{
int uu;
};
struct S
{
short ss;
};
union
{
int i;
double d;
};
} A;
흥미로운 생각이 있다는 것입니다. 그리고 코드를 사용하는 경우 :
A a = {1, 2, 3, 4};
printf("A.s=%d A.uu=%d A.ss=%d A.i=%d \n", a.s, a.uu, a.ss, a.i);
출력입니다 :
A.s=1 A.uu=2 A.ss=3 A.i=4
그래서 내 질문은 : 그런 이유, 그것은 올바른 행동인가?