0
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}  }
   }
  },

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

4

2 回答 2

0

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

struct toto {
  double hei;
};

必须可见。

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

于 2013-04-22T06:19:21.643 回答
0

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

例如,以下编译:

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

而以下没有:

struct S2;
struct S2 arr2[10]; /* error: array type has incomplete element type */
struct S2 {};
于 2013-04-22T06:21:23.577 回答