我已经看到了很多与此有关的问题,但是如果没有特定的代码,我将以不同的方式提出这个问题。有没有一种方法容易,以便确定导致类型不完整的原因?就我而言,我使用的是其他人的代码,并且我完全确定我没有正确的 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/

10-11 23:10
查看更多