我在文件" vector.c":
中有这个结构struct Vector
{
int * m_items;
int m_size;
int m_extSize;
int m_numItems;
};
On" main.c"我试图检查某个向量的值m_items是否为NULL:
if (! vec->m_items)
printf("not fail\n");
我是在初始化" vec"之后做的。带有值 - 向量有1个值(我检查过它)。 但是,gcc正在为上面一行写错误:
Error: dereferencing pointer to incomplete type
为什么?
答案 0 :(得分:2)
您必须将Vector
的整个定义移到头文件中,并将其包含在vector.c和main.c中。
添加typedef struct Vector Vector;
是不够的。这仅仅告诉编译器存在类型Vector
并且在其他地方定义,因此,它是不完整的。它允许您声明指向它的指针,因为它不需要知道它有哪些成员来分配指针。所有指针的大小都相同。