Я пишу функцию, которая анализирует файл с данными текстуры и анимации и загружает его в некоторые глобальные структуры, которые я объявил. Я получаю предупреждение компилятора «Назначение из несовместимого типа указателя» на определенной строке. Это много кода, поэтому я просто собираюсь опубликовать важные части здесь.Предупреждение «Назначение из несовместимого указателя»
Во-первых, у меня есть структура типа данных для моих анимационных процедур, а именно:
typedef struct {
unsigned int frames;
GLuint *tex;
float *time;
struct animation *next;
} animation;
Как вы можете видеть, последняя переменная в структуры является указателем на другой анимации по умолчанию, когда анимация завершено.
Вот объявление функции загрузки:
void LoadTexturePalette(GLuint **texture, animation **anim, const char *filename)
Информация функция загружает в массив анимации, следовательно, двойной указатель.
В самом конце загрузки каждой анимации из файла выводится целое число, которое указывает, какая анимация (из загружаемых), на которую указывает «следующий» указатель.
fread(tmp, 1, 4, file);
(*anim)[i].next = &((*anim)[*tmp]);
В последней строке я получаю предупреждение о компиляторе. Я еще не использую эту переменную, поэтому я не знаю, является ли предупреждение проблемой, но мне кажется, что мой синтаксис или мой подход могут быть неверными при настройке этой переменной.
'(* анит) [я] .next' является указателем «структура анимации»; '& ((* anim) [* tmp])' - это адрес 'animation',' struct' без тега. – pmg