Обратите внимание на следующий код.
enum type {CONS, ATOM, FUNC, LAMBDA};
typedef struct{
enum type type;
} object;
typedef struct {
enum type type;
object *car;
object *cdr;
} cons_object;
object *cons (object *first, object *second) {
cons_object *ptr = (cons_object *) malloc (sizeof (cons_object));
ptr->type = CONS;
ptr->car = first;
ptr->cdr = second;
return (object *) ptr;
}
В функции cons
переменная ptr
имеет тип cons_object *
. Но в возвращаемом значении оно преобразуется в тип объекта *
.
cons_object
и object
- разные структуры. Есть мысли!