我在sampleHeader.h中有一个类似于:
的结构的typedeftypedef struct example Example;
我的sampleSource.c:
struct example{
char a[4];
char b[4];
char c[5];
}
现在出于某种原因,当我将指针返回到我的main函数时,该函数引用已创建的结构(和malloc'd)并尝试打印出每个成员的值,我得到的错误是“不能解除不完整的类型“
有什么想法吗?
答案 0 :(得分:1)
在头文件中,您只有前向声明了struct。这很好,你将能够在头文件中声明指针和对结构的引用(以及包含此头文件的任何其他头文件或cpp文件)。
由于编译器只看到cpp模块中的定义,因此这是唯一能够通过值声明struct example类型的变量或取消引用访问成员的指针的地方。在cpp文件之外,编译器不知道结构有多大或成员是什么。
如果需要在多个模块中使用struct,请在头文件中声明并定义结构。
答案 1 :(得分:0)
在没有看到实际代码的情况下很难肯定地说,但是......
struct example{
char a[4];
char b[4];
char c[5];
};
^ note the new semi colon.