【问题标题】:Extern array of structs外部结构数组
【发布时间】:2012-01-17 11:04:28
【问题描述】:

我有一个声明为

的全局结构数组
struct _links link[255][255][255];

在我的 main.c 中。这个结构数组也在另一个文件action.c中使用,我试图在action.c中将它声明为extern,即

extern struct _links link[255][255][255];

但是,我收到错误消息“数组类型的元素类型不完整”。我不明白那是什么意思。我该如何解决这个问题?

谢谢。

【问题讨论】:

  • 第二个文件中包含_links定义的文件吗?

标签: c arrays structure extern


【解决方案1】:

在头文件中定义你的结构struct _links;将其包含在 my_main.c 和 action.c 中,分别编译并链接它们。

它可以在没有头文件的情况下用于内置数据类型。但是对于用户定义的数据类型,需要头文件。

【讨论】:

  • 注意,这主要是因为没有struct _links的完整定义,编译器无法知道action.c中数组元素的大小和对齐方式。
【解决方案2】:

你必须在某处声明一个类型struct _links

【讨论】:

    【解决方案3】:

    一个好的编程习惯是创建一个新的文件links.h,其中包含

    extern struct _links link[255][255][255];
    

    在 main.c 和 action.c 中都包含这个文件。

    不要忘记只定义一次变量。

    关于extern关键字的更多信息,看看这篇帖子https://stackoverflow.com/a/1433387/1117720

    【讨论】:

      猜你喜欢
      • 2020-02-16
      • 1970-01-01
      • 2011-02-04
      • 2016-01-29
      • 1970-01-01
      • 2021-02-13
      • 2020-02-25
      • 2011-12-28
      • 2012-07-25
      相关资源
      最近更新 更多