инициализация из несовместимого типа указателя - структуры C - PullRequest
0 голосов
/ 28 апреля 2018

Я получаю следующее предупреждение: инициализация из несовместимого типа указателя. Через эту линию

Season season1 = (Season *) malloc(sizeof(Season));

Это структура, которую я определил в season.h

typedef struct season* Season;

1 Ответ

0 голосов
/ 28 апреля 2018

Вы приводите результат из malloc к «указателю на A» и присваиваете его переменной типа «A». «А» означает «Сезон».
Возможно, с этой версией вашего кода станет понятнее
отредактировано для большего количества говорящих идентификаторов и исправлено с помощью правильной вещи внутри sizeof (), а не приведения результата malloc ().

typedef struct season* PointerToseason; // if you insist on hiding it inside a typedef

PointerToseason season1 = malloc(sizeof(struct season));

Широко предпочтительная версия этого

PointerToseason season1 = malloc(sizeof(*season1));

Требуется меньше знаний о вещах, которые были спрятаны внутри typedefs (мудро или нет).

Кроме того, внимательно посмотрите на слишком похожие идентификаторы в вашем коде season и Season.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...