在 Android Studio 和 VS code 的双重夹击下, 凭借自动补全, 以及浮动显示注释等功能, 我再也不担心长变量名与长函数名, 在用回 Keil 之前, 我甚至还以为我进入了 22 世纪(大雾). 直到 2019 的冬天, 我怀着期待打开了 Keil ( Keil 新图标还蛮现代化的, 不错不错), 下一刻我就醉了, 我的内心充满了怀疑: " 这又长又臭的变量名是我起的??? " , " 这变量名叫啥来着?? " , " 噢, 还翘舌+前后鼻音, 还TM拼错了?? " . 为了解决我心中的疑惑, 我决定去复习一下汉语拼音, 噢不对, 我要用 VS code 写 C51.

对于 Keil 的32位版本, 其编辑器还有自动补全功能, 而对于其 8 位机版本(Keil uVision), 自动补全却成为了可望不可及的功能. 更别提那些注释浮动显示, 全局引用查看等功能了, Keil 的反汇编调试的确方便, 但是我变量名都打不全, 编译都通过不了……

VS code 这么香, 谁不想尝上一口呢. 其实, 我已经尝了好久了哈哈哈 xD.

毕竟不能独食, 分享一下我的方案.

首先:

1. 准备一个香喷喷的 VS code, 并且装好 C 语言的插件(推荐微软官方提供的 C 语言插件).

2. 准备一个 Keil uVision(版本号大于4).

3. 准备一个由 Keil uVision 维护的项目.

开始:

打开 Keil uVision 维护的项目, 看到左边的写着 " Project " 的目录吗?

右键点击你项目目标的文件夹, 选第一个[Options for Target ' xxxxxxxx ' ] .

在我这里, 我的项目目标的文件夹名字叫 " MyProject " , 如图:




vscode lua提示文件太大 vscode 文件夹比较_变量名


然后选到 " Output " 标签页, 如图:


vscode lua提示文件太大 vscode 文件夹比较_变量名_02


这里的关键是这个批处理, 运行这个批处理, 就能自动调用Keil 的编译器, 然后就生成了 hex 文件了. 所以说, 我们现在要做的事情就是在 VS code 中, 运行一下这个批处理就 OK 了.

找到你项目的文件夹, 把整个文件夹拖到 VS code 图标上, 观察 VS code 的左侧栏, 然后看图:


vscode lua提示文件太大 vscode 文件夹比较_批处理_03


是不是发现了你自己的批处理文件, 和一个叫 " .vscode " 的文件夹.?

然后观察 VS code 的菜单栏, 点击 " 调试 " -> " 添加配置 " , 如图:


vscode lua提示文件太大 vscode 文件夹比较_批处理_04


然后它会新建一个 json 配置文件, 并且弹出一个框框让你选, 如图:


vscode lua提示文件太大 vscode 文件夹比较_变量名_05


选好之后, 是这个样子的, 如图:


vscode lua提示文件太大 vscode 文件夹比较_变量名_06


根据我的批处理名字, 改了一下, 如图:


vscode lua提示文件太大 vscode 文件夹比较_批处理_07


然后就Ok了.

回到你 VS code 的工程目录, 点击F5调试, 结果如下图:


vscode lua提示文件太大 vscode 文件夹比较_变量名_08


这样就 OK 了, 哈哈哈.

注意事项:

1. 如果你有新的 C 文件加入或新建到你的项目中, 编译前记得先到 Keil 中加入这个 C 文件, 然后重新生成批处理, 如果忘记了这一步操作, 批处理是不会自动把你的新文件纳入进行编译的. 步骤如图:


vscode lua提示文件太大 vscode 文件夹比较_vscode c++多个文件夹的配置_09


vscode lua提示文件太大 vscode 文件夹比较_变量名_10


结果如下:

Batch-Build summary: 1 succeeded, 0 failed, 0 skipped - Time Elapsed: 00:00:04

图:


vscode lua提示文件太大 vscode 文件夹比较_vscode怎么运行c语言_11


这样就表明已经成功建立批处理文件了.

2. C51 兼容的 C 版本比较老(貌似是支持到 C89 ), 像那种循环体内定义i, 稀疏数组个别下标具体定义等等特性是不兼容的, 所以很可能出现 VS code 没有语法错误, 在 Keil 编译器就是过不了的情况, 大家可以在 .vscode 文件夹中的 c_cpp_properties.json 中进行 VS code 的 C 版本配置, 让其版本与 C51 兼容的版本相同.

3. C51 有一些特别的头文件, 和一些特别的关键字是标准 C 没有的, 我是这样解决的, 还是设置c_cpp_properties.json, 看图:


vscode lua提示文件太大 vscode 文件夹比较_vscode lua提示文件太大_12


这样子设置, 基本上就不会有特殊关键字的语法错误了, 但是即便是这样设置, 我还是没办法处理中断 ( interrupt ) 所提示的语法错误, 我也想过用宏定义的方法, 但是由于空格的存在, 木有办法, 但是这还是不能阻挡我用 VS code, VS code 实在太香了.

顺便问问谁能教教我怎么避开这个不是错误的语法错误提示, 如图:


vscode lua提示文件太大 vscode 文件夹比较_vscode lua提示文件太大_13