c - 在另一个结构中向前声明的结构数组

标签 c struct forward-declaration

我正在尝试转发声明一个结构 A 并定义一个包含 A 数组的结构 B。 我收到错误消息,指出“不允许使用不完整的类型”

这是我的:

struct A;

struct B
{
// something 
struct A x[10]; // This where I get the error incomplete type not allowed
};

struct A
{
// something
};

我做错了什么?

最佳答案

作为解决方法,您可以像这样声明一个指向结构 A 的指针

struct B
{
// something 
struct A * x;
};

这是因为如果你有这样一行

struct B b;

b 将有一个成员 x[10]。如果你没有完全声明 struct A,struct B 就不知道如何分配 10 个 struct A 元素。在解决方法中,如果您只声明一个指针,则结构 B 不需要知道如何分配结构 A,而只需要知道如何分配一个指针。

关于c - 在另一个结构中向前声明的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28377536/

相关文章:

c - 如何在 header 中构造函数,在源代码中定义

C++ dynamic_cast 转发声明的类模板编译,但它安全吗?

c - 在 C89 中转发声明 typedef 结构的更好方法?

c - C语言struct数组

c - 尝试添加可选规则时,在 Bison 中转移/减少冲突

c - 我需要将许多函数中使用的全局变量设置为本地变量

c - 试图创建一个结构,不让我输入字符串

c++ - 从成员中查找结构基地址的标准方法

将函数指针转换为另一种类型

c++ - 为什么 VS2017 会警告 "Function definition not found"对于使用输入 typedef 声明但使用原始定义的函数向前?