我在sampleHeader.h中有一个结构体的typedef,类似于:
typedef struct example Example;
我的sampleSource.c中有:
struct example{
char a[4];
char b[4];
char c[5];
}
现在,由于某种原因,当我返回一个指向主函数的指针时,该函数引用已创建(和 malloc'd)的结构并尝试打印出每个成员的值,我收到一个错误,类似于“无法取消引用不完整类型”
有什么想法吗?
最佳答案
在头文件中,您仅向前声明了该结构。这很好,您将能够在 header (以及也包含此 header 的任何其他 header 或 cpp 文件)中声明对结构的指针和引用。
由于编译器只看到 cpp 模块中的定义,因此这是您能够按值声明 struct example 类型的变量或取消引用访问成员的指针的唯一位置。在 cpp 文件之外,编译器不知道结构有多大或成员是什么。
如果需要在多个模块中使用该结构体,请在 header 中一起声明和定义该结构体。
关于c - 头文件中的 typedef 结构体 c 文件中的结构体定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19257547/