Обратите внимание на следующий код:
typedef struct {
int type;
} object_t;
typedef struct {
object_t object;
int age;
} person_t;
int age(object_t *object) {
if (object->type == PERSON) {
return ((person_t *)object)->age;
} else {
return 0;
}
}
Является ли этот юридический код или он нарушает правило сглаживания C99? Пожалуйста, объясните, почему это законно/незаконно.