c - 错误: array type has incomplete element type - already defined structs

标签 c

extern  const   struct  ss_type     ss_table    [MAX_CLASS];
extern  const   struct  ss_group_type   ss_group_table  [MAX_GROUPS];

merc.h:4430:30:错误:数组类型具有不完整的元素类型 Merc.h:4431:35: 错误:数组类型具有不完整的元素类型

正在从事一个宠物项目,我完全被这个项目难住了。我真的不知道为什么这个错误会反射(reflect)这些行。我最好的猜测是编译器无法理解 ss_table、ss_type、ss_group_table 和 ss_group_type 是什么。

但是,ss_table 和 ss_type 已定义

const struct ss_type    ss_table [MAX_CLASS] =  {   {   /* FALSE */  
"",     
{0},    
{0},    
{NULL}  
},

ss_group_table 和 ss_group_type 也是如此

const struct ss_group_type  ss_group_table [MAX_GROUPS] = 
{
  /* NONE: FALSE return 0 */
  {"", 0,
   {
     {NULL, 0, 0,   {NULL},    {NULL}  }
   }
  },

这让我不知道如何解决这个错误。

最佳答案

不,类型仅被前向声明,但未指定。至少你没有给我们任何东西。 resl 定义如

struct toto {
  double hei;
};

必须可见。

这样的struct定义应该放在头文件.h中并包含在.c文件(也称为编译单元)中使定义可见。

关于c - 错误: array type has incomplete element type - already defined structs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16140505/

相关文章:

const volatile 在生产代码中加倍

c - 如何创建结构数组的数组

c - 非空终止 char* 数组的长度

c - Windows 和 Linux (gcc) C 编译器中的不同输出

c - 写入由 execl 调用的子进程中的管道

c - 如果指向标准输入,是什么让 fgets() 实际上等待用户输入?

c - 我的编译器有错误吗?两个相同的代码文件,但只有其中之一有效

c - C 中高级和不寻常的函数声明

c - 使用防御性编程初始化结构数组的问题

c - 如何从子进程为父进程设置环境变量?