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