写了一个冒泡排序,在 VC 等编译器下没问题,在 Keil C51 上就疯狂报错。

除了少括号等基础原因外,还有一个可能是:

== 和 C51 的关键词重名了 ==

比如我使用的这个 data,是 C51 的保留关键字:

data 关键词在 Keil C51 中的高亮显示

data 是 C51 的保留关键字,高亮不明显,容易被忽略

而我定义了一个名为 data 的数组,导致如下一堆 error 结果:

Keil C51 报错信息截图

大量 error C141: syntax error near '[', 容易误以为是语法错误

解决方法

给数组换一个变量名即可。

这里截图就是为了展示杀千刀的 Keil 关键词加粗的不明显,导致我刚开始没看出来……

谨以此篇纪念我浪费的 2 个小时 QAQ


附:C51 关键词一览

存储器类型

C51 存储器类型表格

定义变量时可以省略存储器类型,C51 将按编译模式默认存储器类型

基本数据类型

C51 基本数据类型表格

C51 支持的基本数据类型一览

存储种类

C51 变量的存储种类有四种,分别是:

特殊功能寄存器变量 sfr

用于声明 8051 的特殊功能寄存器地址。

位变量 bit

用于声明一个位变量,取值只能是 0 或 1。

其实其他都还好,这个 data 是真的其他语言用惯了……