我已经看到了很多与此有关的问题,但是如果没有特定的代码,我将以不同的方式提出这个问题。有没有一种方法容易,以便确定导致类型不完整的原因?就我而言,我使用的是其他人的代码,并且我完全确定我没有正确的 header ,但是(由于计算机比人眼更快速,更好地完成了这些工作),有一种方法可以让编译器说,“嘿,您认为您在第34行输入了X,但实际上是缺失的。”该错误本身仅在您分配时显示,这不是很有帮助。
最佳答案
前几天,我看到一个问题,有人无意中使用了诸如
struct a {
int q;
};
struct A *x;
x->q = 3;
尽管
struct A
完全是未定义的,但借助A
关键字,编译器知道struct
是一个结构。那是在C++中,这种
struct
的用法是非典型的(事实证明,这可能会导致踩脚)。在C中,如果您愿意typedef struct a {
...
} a;
那么您可以将
a
用作类型名称,并在以后省略struct
。如果您输错名称或忘记标题,这将导致编译器稍后为您提供未定义的标识符错误,而不是不完整的类型。关于c - 取消引用不完整类型的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2700646/