2016-11-24 2 views
0

das ist meine Header-DateiZeiger auf unvollständigen Typ dereferenzieren |

#include<stdio.h> 
    #include<stddef.h> 

char memory[25000]; //Declare an array of 25000 bytes in size 

//Define data structure to save the details of the each memory block 
struct metaData{ 
int status; //save the status of the block is free or whether it is already  allocated 
size_t bSize; //save the block size in bytes 
struct metaData *next; //save the pointer to next header 
}; 

struct header *firstBlock=(void*)memory; //Initialise a pointer to the starting address of the memory 


void initializeMemory(){ 
firstBlock->bSize=25000-sizeof(struct metaData); 
firstBlock->status=1; 
firstBlock->next=NULL; 
} 

und wenn ich versuche, diese InitializeMemory() zu verwenden, sagt es Zeiger auf einen unvollständigen Typ dereferencing und wies auf InitializeMemory() funtion. Was ist der Fehler davon?

Antwort

1

Sie haben firstBlock als struct header * deklariert. Sie erhalten den Fehler "unvollständiger Typ", weil Sie keine Struktur namens struct header definiert haben. Stattdessen haben Sie struct metaData definiert.

Verwenden Sie stattdessen struct metaData *firstBlock und es sollte funktionieren.

Verwandte Themen