假设我们在一个源文件中有两个结构:
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
(因为比较函数的参数不能更改 - 它是递归的),但我想看看是否有任何其他解决方案,并且为什么会这样。
注意:结构定义已写入源文件以创建不透明数据类型。