繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM