В вашей программе нет ничего, что называется person
или u_type
.Конечно, у вас есть struct person
и union u_type
, но нет typedefs, чтобы вы могли просто использовать person
и u_type
Попробуйте sizeof(struct person)
Чтобы ответить на вопросы в комментариях:
struct person { ... };
Дает вам тип: struct person
- где человек является тегом.Вам нужно использовать struct person
, чтобы использовать тип.В этом случае sizeof(struct person)
.
struct { ... } person;
Дает вам переменную с именем person
, которая является структурой (но вы не можете повторно использовать тип).В этом случае sizeof(person)
Наиболее распространенное использование - typedef struct { ... } Person
, которое дает вам тип Person - очень похоже на первый случай, но вы можете использовать Person
вместо struct person
.В этом случае sizeof(Person)