Мои психические отладочные способности говорят мне, что, вероятно, у вас есть определение структуры в obj.h
, которое не заканчивается точкой с запятой.
Неверно:
struct object { /* etc. */ }
Правильно:
struct object { /* etc. */ };
Почему я так думаю? В ошибках сказано:
init.c:6:1: error: two or more data types in declaration specifiers
init.c: In function 'objinit':
init.c:24:1: warning: control reaches end of non-void function
В предупреждении говорится, что компилятор считает, что ваша функция имеет тип возврата не void, но ваша функция явно объявлена с типом возврата void
. Ошибка говорит о том, что компилятор считает, что ваша функция объявлена с несколькими типами. Наиболее вероятное объяснение состоит в том, что в obj.h
есть определение структуры, которое не определено.