错误:数组类型具有不完整的元素类型 - 已定义的结构

时间:2013-04-22 06:12:03

标签: 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:错误:数组类型具有不完整的元素类型

在一个宠物项目上工作,我完全被这个项目困住了。我真的不知道为什么这个错误会反映这些行。我最好的猜测是编译器无法理解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}  }
   }
  },

让我对如何解决此错误感到茫然。

2 个答案:

答案 0 :(得分:0)

不,类型只是前向声明,但未指定。至少你没有给我们任何。像

这样的resl定义
struct toto {
  double hei;
};

必须可见。

此类struct定义应放在头文件.h中,并包含在.c文件(称为编译单元)中,以使定义可见。

答案 1 :(得分:0)

如果类型不完整,则表示它已被前向声明,但尚未完全声明。

例如,以下编译:

struct S1 {};
struct S1 arr1[10];

而以下情况则不然:

struct S2;
struct S2 arr2[10]; /* error: array type has incomplete element type */
struct S2 {};