【发布时间】:2013-03-11 18:32:22
【问题描述】:
假设我们在一个源文件中有两个结构:
struct B {
int x;
};
struct A {
beta y;
};
在等效的头文件中,我们有这些:
typedef B* beta;
typedef A* alpha;
另外,这些函数原型是在头文件中定义的:
printAplha(alpha);
compare(const beta, const beta);
在主文件中,我已经包含了具体的头文件,代码如下:
alpha one, two;
printAlpha(one);
printAlpha(two);
//everything works fine up to here
compare(one->y, two->y);
在我得到的代码的最后一行
main.c:37:20:错误:取消引用指向不完整类型的指针
main.c:37:33:错误:取消引用指向不完整类型的指针
我知道我可以为 compare 使用包装函数,其参数类型为 alpha(因为比较函数的参数不能更改 - 它是递归的),但我想看看有没有其他解决办法,为什么会这样。
注意:结构定义已写入源文件以创建不透明数据类型。
【问题讨论】:
-
为什么我的问题被否决了?有人可以提供一个理由以便知道我做错了什么吗?