у меня есть следующие части кода:
typedef struct Object* ObjectP;
ObjectP CreateObject(void *key) {
printf("GOT %d\n",(*(int*) key));
ObjectP objP = (ObjectP) malloc(sizeof(Object));
if (objP == NULL) {
//TODO ReportError(MEM_OUT);
return NULL;
}
objP->_key = key;
objP->_next = NULL;
objP->_numInChain = 1;
return objP;
}
typedef struct Object {
ObjectP _next;
void* _key;
int _numInChain;
} Object;
и в другом файле:
void IntPrint(const void *key) {
assert(key != NULL);
printf("%d",*((const int*)key));
}
и в другом файле у меня есть main ():
int main(int argc, char* argv[]) {
int* key = (int*) malloc(sizeof(int));
*key = 20;
ObjectP a = CreateObject(key);
IntPrint(a->_key); //THIS DOESN'T COMPILE
return 0;
}
IntPrint не компилируется. это пишет:
ошибка: разыменование указателя на неполный тип
и я не могу понять почему, потому что IntPrint получает void *, а ключ -> _ также void *.
Спасибо!