写了一个冒泡排序,在 VC 等编译器下没问题,在 Keil C51 上就疯狂报错。
除了少括号等基础原因外,还有一个可能是:
== 和 C51 的关键词重名了 ==
比如我使用的这个 data,是 C51 的保留关键字:
data 是 C51 的保留关键字,高亮不明显,容易被忽略
而我定义了一个名为 data 的数组,导致如下一堆 error 结果:
大量 error C141: syntax error near '[', 容易误以为是语法错误
解决方法
给数组换一个变量名即可。
这里截图就是为了展示杀千刀的 Keil 关键词加粗的不明显,导致我刚开始没看出来……
谨以此篇纪念我浪费的 2 个小时 QAQ
附:C51 关键词一览
存储器类型
定义变量时可以省略存储器类型,C51 将按编译模式默认存储器类型
基本数据类型
C51 支持的基本数据类型一览
存储种类
C51 变量的存储种类有四种,分别是:
- auto(自动)
- extern(外部)
- static(静态)
- register(寄存器)
特殊功能寄存器变量 sfr
用于声明 8051 的特殊功能寄存器地址。
位变量 bit
用于声明一个位变量,取值只能是 0 或 1。
其实其他都还好,这个 data 是真的其他语言用惯了……