请问这个编译错误如何解决?


typedef struct _seqof1 {
    struct _seqof1  *next;
    HS_SCCH_Codes   value;
} *_seqof1;

编译出的错误

D:\gcctest\include>gcc abc.c
In file included from abc.c:27:
abc.h:595: error: conflicting declaration 'typedef struct _seqof1*_seqof1'
abc.h:592: error: 'struct _seqof1' has a previous declaration as `struct _seqof1


我分析了下,似乎它是使用了C++编译器,有什么办法使得它能够对这个.h文件使用C编译器呢?如果使用C编译器,应该不会报这种错的啊。

'

7 个解决方案

#1


看报错提示就该明白,不能把struct _seqof1类型转化为*_seqof1类型
楼主清楚typedef什么概念吗?

#2


typedef struct _seqof1 {                             //定义结构体_seqof1
    struct _seqof1  *next;
    HS_SCCH_Codes   value;
} *_seqof1;                                                   //定义结构体指针 _seqof1

typedef  _seqof1* _seqof1; 两者命名相同,不可能编过,解决办法为使用去掉第一行的_seqof1或换成另外一个名字

#3


typedef struct _seqof1 {                             //定义结构体_seqof1
    struct _seqof1  *next;
    HS_SCCH_Codes   value;
} *_seqof1;                                                   //定义结构体指针_seqof1
这个是花钱买的工具自动生成的,不是人编写的。这个不能修改的,只能通过选择编译器或者更改编译选项来解决。

#4


引用 2 楼 u010808402 的回复:
typedef struct _seqof1 {                             //定义结构体_seqof1
    struct _seqof1  *next;
    HS_SCCH_Codes   value;
} *_seqof1;                                                   //定义结构体指针 _seqof1

typedef  _seqof1* _seqof1; 两者命名相同,不可能编过,解决办法为使用去掉第一行的_seqof1或换成另外一个名字
  

这个是花钱买的工具自动生成的,不是人编写的。这个不能修改的,只能通过选择编译器或者更改编译选项来解决。

#5


要不然这样子:

typedef struct _seq
{
struct _seq* next;
int value;
}*_seq1;

#6


引用 2 楼 u010808402 的回复:
typedef struct _seqof1 {                             //定义结构体_seqof1
    struct _seqof1  *next;
    HS_SCCH_Codes   value;
} *_seqof1;                                                   //定义结构体指针 _seqof1

typedef  _seqof1* _seqof1; 两者命名相同,不可能编过,解决办法为使用去掉第一行的_seqof1或换成另外一个名字
+1

#7


typedef是用来定义结构的,结构名不能放在struct后面

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2018 ITdaan.com 粤ICP备14056181号