My psychic debugging abilities tell me that you probably have a structure definition in obj.h that does not end with a semicolon.
Wrong:
struct object { }
Right:
struct object { };
Why do I think so? Mistakes say:
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
The warning says that the compiler believes that your function has a non-military return type, but your function is clearly declared with a void return type. The error says that the compiler considers that your function is declared by several types. The most likely explanation is that obj.h has a structure definition that is not destroyed.
source share