Keil的C51编程遇到莫名其妙的问题

最近正值本科毕设期间

坐在实验室经常会有小同学来问Keil遇到错误不知道怎么改的问题

看了很多

应该说大部分都是语法错误

还是能够看出来的

但有一些错误却不知是哪里错了

可以说从C语言的角度讲完全没有错误

但是在Keil中就会报错

错误的形式大概是:

syntax error near 'XXX'

然后后面跟着一堆的乱七八糟的错误

这种错误的产生原因很简单

第一可能是主函数中声明的变量没有写到主函数的起始处

比如要声明一个int a = 4;

那么就应该把这句声明直接写到主函数开头

而且在声明之前不能有任何其他语句

包括初始化寄存器等

main(){后面直接跟着变量声明

第二种可能是定义的子函数顺序

有可能是子函数B中调用了子函数A

但子函数B的声明又写到了子函数A前面

也会报这种错误

总之产生这种错误的原因就是逻辑顺序错误

只要把先用到的函数放在前面

后用到的函数放在后面

就一般不会出现这种错误

以上

Keil5中使用switch语句时可能会出现报错的情况。根据引用的内容,这是因为在标准C中,switch语句后面只能接整型常量或常量表达式,而不能接范围表达式。然而,一些编译器(如GNUC)对标准进行了扩展,支持接受范围值的switch语句。 如果你在Keil5中遇到了使用范围表达式的switch语句导致报错问题,你可以尝试以下解决办法: 1. 在Keil5的设置中添加对GNU或C99标准的扩展支持。这样做可以让Keil5接受范围表达式的switch语句。 2. 将范围表达式拆分为多个单独的case语句,每个case对应一个范围内的值。这样可以避免使用范围表达式而不报错。 综上所述,当在Keil5中使用switch语句报错时,可以考虑添加对GNU或C99标准的扩展支持,或者将范围表达式拆分为多个单独的case语句。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [单片机编程KEIL_C51某些莫名其妙报错解决](https://blog.youkuaiyun.com/qq_64257614/article/details/130639837)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Keil v5.36.0.0 无法使用switch语句 “...”问题](https://blog.youkuaiyun.com/weixin_43697465/article/details/131593462)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值