-1

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

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

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

4 回答 4

3

在之前声明model类型make

typedef struct 
{
    char * cModel;    
} model;

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

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

于 2013-08-08T08:59:15.210 回答
1

命令!

typedef struct 
{
    char * cModel;    
} model;

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

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

于 2013-08-08T08:59:07.110 回答
1

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

您也可以转发声明model并保持订单不变,但这里没有必要。

于 2013-08-08T08:59:23.557 回答
0

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

   typedef struct
{
    char * cModel;
} model;

typedef struct
{
    char  *cMake;
    model *testModel;
} make;
于 2013-08-08T09:01:01.193 回答