语法错误C2061使用结构

时间:2013-08-08 08:57:11

标签: c struct

我对这个错误感到有点困惑......

所以,在这段代码中,我有两个结构:

typedef struct 
{
    char  *cMake;   
    model *testModel;
} make;

typedef struct 
{
    char * cModel;    
} model;

现在,如果我编译,我会收到以下错误:

Error   1   error C2061: syntax error : identifier 'model'  
Error   2   error C2059: syntax error : '}' 

如果我对model *testModel行发表评论,那么编译好......任何想法?谢谢!

4 个答案:

答案 0 :(得分:3)

model之前声明make类型:

typedef struct 
{
    char * cModel;    
} model;

typedef struct 
{
    char  *cMake;   
    model *testModel;
} make;

通常,标识符名称在完全声明之前不能使用。

答案 1 :(得分:1)

为了!

typedef struct 
{
    char * cModel;    
} model;

typedef struct 
{
    char  *cMake;   
    model *testModel;
} make;

您的编译器在使用它时不知道模型,因为它在代码中稍后定义。

答案 2 :(得分:1)

您应该在使用之前声明model。在这种情况下,最简单的方法是简单地交换两个定义。

您也可以转发声明model并保留相同的订单,但这里不需要。

答案 3 :(得分:0)

如果您首先定义模型,则效果很好。

   typedef struct
{
    char * cModel;
} model;

typedef struct
{
    char  *cMake;
    model *testModel;
} make;