Пожалуйста, рассмотрите следующий код.
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*. Но в возвращаемом значении он преобразуется в тип object*.
- Мне интересно, как это возможно, потому что
cons_objectиobject- разные структуры. - Есть ли какие-либо проблемы при создании таких вещей?
Любые мысли!