[英]typedef struct in header file struct definition in c file
我在sampleHeader.h中有一个结构的typedef,类似于:
typedef struct example Example;
我在sampleSource.c中:
struct example{
char a[4];
char b[4];
char c[5];
}
现在由于某种原因,当我返回指向主函数的指针时,该主函数引用了已创建(和malloc'd)的结构,并尝试打印出每个成员的值时,出现了一条错误消息,内容为“无法取消引用不完整类型”
有任何想法吗?
在头文件中,您仅向前声明了该结构。 很好,您将能够在标头(以及包含此标头的任何其他标头或cpp文件)中声明结构的指针和引用。
由于编译器仅在cpp模块中看到了定义,因此这是您唯一可以通过值声明struct example类型变量或取消引用访问成员指针的地方。 在cpp文件之外,编译器不知道结构的大小或成员的大小。
如果需要在多个模块中使用该结构,请在标头中一起声明和定义该结构。
在没有看到实际代码的情况下很难确定,但是...
struct example{
char a[4];
char b[4];
char c[5];
};
^ note the new semi colon.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.