【发布时间】:2011-04-06 09:47:37
【问题描述】:
我有以下代码部分:
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* 而 a->_key 也是 void*。
谢谢!
【问题讨论】:
-
您是否按照编译顺序发布了代码片段?
标签: c