C programming: Dereferencing pointer to incomplete type error C programming: Dereferencing pointer to incomplete type error c c

C programming: Dereferencing pointer to incomplete type error


You haven't defined struct stasher_file by your first definition. What you have defined is an nameless struct type and a variable stasher_file of that type. Since there's no definition for such type as struct stasher_file in your code, the compiler complains about incomplete type.

In order to define struct stasher_file, you should have done it as follows

struct stasher_file { char name[32]; int  size; int  start; int  popularity;};

Note where the stasher_file name is placed in the definition.


You are using the pointer newFile without allocating space for it.

struct stasher_file *newFile = malloc(sizeof(stasher_file));

Also you should put the struct name at the top. Where you specified stasher_file is to create an instance of that struct.

struct stasher_file {    char name[32];    int  size;    int  start;    int  popularity;};


How did you actually define the structure? If

struct {  char name[32];  int  size;  int  start;  int  popularity;} stasher_file;

is to be taken as type definition, it's missing a typedef. When written as above, you actually define a variable called stasher_file, whose type is some anonymous struct type.

Try

typedef struct { ... } stasher_file;

(or, as already mentioned by others):

struct stasher_file { ... };

The latter actually matches your use of the type. The first form would require that you remove the struct before variable declarations.