Ну, это потому, что car_t
относится к struct car
, который равен неполного типа.
Вы уверены, что не имели в виду struct Car
(с заглавной буквы 'C')?
sizeof(car_t)
не будет известен в вызове malloc
, поскольку вы не указали, что на самом деле внутри этой структуры.
Стандарт ISO C (C99, 6.2.5) определяет неполные типы как типы, которые «описывают объекты, но не имеют информации, необходимой для определения их размеров». Это именно то, что у вас есть в этой ситуации.