expected declaration specifiers of xx before xx 产生该错误的原因以及解决方案

expected declaration specifiers of xx before xx 产生该错误的原因以及解决方案

原因

1.这种错误,一般是头文件include混乱造成的。

2.头文件交叉调用导致
3.报错行函数使用时形参或类型多了一些标点符号
4.这是我遇见的错误:结构体在使用时没有使用typedef,然后在编译过程中引用该结构体所在头文件时将头文件放在了稍后位置进行编译,这就导致一个结果:当编译器编译到我所使用的函数时并没有编译到该结构体所在头文件。

解决方案

1.在引用时一般先写#include “xx.h” ,再引用#include <xx.h>
2.例如你在a.h声明了x,在b.h中使用了x,结果又在a.h中引用了b.h从而产生了交叉引用。
3.完善函数定义,将报错行函数根据需要修改
4.可以将声明该结构体的头文件放在前面编译,或者使用typedef声明结构体。

#define是预处理指令,typedef是在编译时处理的,编译预处理和编译时处理有什么不同。
编译预处理会在编译前处理好,比如#define N 7 则遇到N的地方都直接用7替换,然后在进行整个程序的编译,typedef则是在编译时遇到你所定义的东西,再回到typedef语句中寻找解释,继续编译下去的。(碰到一个,回去处理一个,不是一下子处理好)
关于typedef语法可以看
typedefine语法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值