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

标签 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];
}

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

有什么想法吗?

最佳答案

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

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

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

关于c - 头文件中的 typedef 结构体 c 文件中的结构体定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19257547/

相关文章:

c - about/proc读写函数

c - 关于将指针集成到程序中的建议

c++ - 我可以将符号数组传递给宏吗?

c - 访问结构体中包含的数组

android - 不显示动态行

c++ - #pragma omp parallel 和 #pragma omp parallel for 之间的区别

C++ 在函数中转换指针

c - 如何启动一个数组,每个元素都在一个单独的线程中

ios - 如何在不滚动的情况下根据文本长度动态更改textview高度和单元格高度

c++ - 分配给动态数组时,是否会在 C++ 中分配内存?