0

我在 sampleHeader.h 中有一个结构的 typedef,类似于:

typedef struct example Example;

我在我的 sampleSource.c 中有:

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

现在由于某种原因,当我返回一个指向我的主函数的指针时,该指针引用了一个已创建(和 malloc'd)的结构并尝试打印出每个成员的值,我得到一个错误,类似于“不能取消引用不完整类型”

有任何想法吗?

4

2 回答 2

1

在头文件中,您只前向声明了结构。这很好,您将能够在标头(以及包含此标头的任何其他标头或 cpp 文件)中声明对结构的指针和引用。

由于编译器只看到了 cpp 模块中的定义,因此这是唯一可以按值声明 struct example 类型的变量或取消引用访问成员的指针的地方。在 cpp 文件之外,编译器不知道结构有多大或成员是什么。

如果您需要在多个模块中使用该结构,请在标头中一起声明和定义该结构。

于 2013-10-08T20:32:43.863 回答
0

在没有看到实际代码的情况下很难确定,但是....

struct example{
    char a[4];
    char b[4];
    char c[5];
};
 ^ note the new semi colon.
于 2013-10-08T20:31:00.673 回答