c文件中头文件结构定义中的typedef结构

时间:2013-10-08 20:20:32

标签: c pointers dynamic struct allocation

我在sampleHeader.h中有一个类似于:

的结构的typedef
typedef struct example Example;

我的sampleSource.c:

struct example{
    char a[4];
    char b[4];
    char c[5];
}

现在出于某种原因,当我将指针返回到我的main函数时,该函数引用已创建的结构(和malloc'd)并尝试打印出每个成员的值,我得到的错误是“不能解除不完整的类型“

有什么想法吗?

2 个答案:

答案 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.