【问题标题】:extern struct array error: array type has incomplete element typeextern struct array 错误:数组类型的元素类型不完整
【发布时间】:2017-12-25 07:09:20
【问题描述】:

我有 3 个文件:main.cdef.cdef.h。两个.c 文件都包含def.h。 所有文件都在同一个目录中。 我的编译器是 gcc 版本 4.9.2

def.h 中:

struct _info {
    int a;
};

def.c 中:

#include "def.h"
struct _info info[] = {};

ma​​in.c 中:

#include "def.h"
extern struct _info info[];

当我将def.c 构建为目标文件,然后使用main.c 构建时,例如:

gcc -c def.c
gcc main.c def.o

我收到一条错误消息:数组类型的元素类型不完整


如果我使用typedefstruct _info 定义为INFO 就像:

typedef struct _info INFO;

并在.c 文件中将struct _info 替换为INFO。 编译好了。

但是为什么做什么 typedef 做什么?

【问题讨论】:

  • 无法复制。听起来像一个编译器错误。您的编译器及其版本是什么?
  • 无法重现。你是怎么编译的?
  • 只是询问所有文件是否在同一路径中
  • 请注意,全局或标签命名空间中以_ 开头的标识符由实现保留。避免这些。
  • @StoryTeller 是的,谢谢。这只是一个例子。

标签: c struct typedef extern


【解决方案1】:

感谢大家的帮助。这个问题以main.c 的拼写错误告终。 比如:

extern struct _infoo info[];

typedef替换它们时,肯定一切正常。

【讨论】:

  • IMO 这是对结构使用 typedef 的一个很好的理由;因为然后一个错字给出了一个更明显的编译错误
猜你喜欢
  • 2022-06-25
  • 1970-01-01
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
相关资源
最近更新 更多