Вложенные структуры и строгий псевдоним в c

Обратите внимание на следующий код:

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? Пожалуйста, объясните, почему это законно / незаконно.

17
задан outis 7 December 2011 в 13:57
поделиться