如何发挥Visual Studio 2019强大的编辑功能轻松编辑Keil项目
本文地址:https://www.cnblogs.com/jqdy/p/12565161.html
习惯了VS的强大编辑功能,对Keil 5越来越深恶痛绝。查阅网络文章后按图索骥初步实现了VS编辑Keil项目的功能,但是VS仍然不识别sfr、sbit、bit等特有关键字。虽然不是大问题,但是当键入STC8.h中定义的相关寄存器名称时,不能使用自动提示功能,成了比较大的缺憾。尝试再三,利用条件编译终于让VS识别了sfr等特有关键字,并实现了自动提示功能。
第一步:模拟Keil5中的项目结构,在VS中建立一个解决方案。
这不是让VS编译Keil项目,而是方便在VS中打开项目中的各个文件进行编辑。下面,每个操作步骤一张图片。
1. 创建新项目

2. 选定空项目

3. 确定项目名称和目录
名称和目录随意,不过为了避免产生混淆,名称最好和Keil中的项目名称一致或类似,目录位置最好也和Keil的.uvproj放在一起,或在之下再建一个专门的vs项目目录。总之,原则就是即要与Keil项目相呼应,又要分开放置,避免混淆。

4. 添加有关.c和.h文件
在“解决方案资源管理器”中,右击“源文件”-“添加”-“新建项”或者“现有项”,找到Keil项目所在目录或者其下的子目录,添加或者新建Keil项目所使用的".c"文件。同样,处理“解决方案管理器”中的“头文件”,添加或者新建相关的“.h”文件。这样就把所需的.c和.h文件添加完毕了,添加完毕后保存。
这时,从vs项目所在文件夹中可以看到VS特有的.sln、.vcxproj等文件和Debug目录,这些都是VS使用,但Keil不用的,所以,为了避免混淆,最好将VS和Keil文件放在不同的目录。注意这里所说的“VS使用,但Keil”不用,仅仅针对于.sln和.vcxproj等文件,对于刚才在“解决方案管理器”中添加的.c和.h文件,两者是共用的,均保留在原Keil项目目录下。在后续使用VS编辑相关文件并保存后,切换到Keil中,Keil会提示相关文件已经改变,是否重新加载,重新加载就会发现VS编辑的内容了。

第二步:让VS可以自动找到芯片头文件和项目头文件。
5. 设置VS项目的默认头文件目录,
目的是在VS中建立头文件搜索路径,好在各个.c和.h文件之间自动建立关联。
5.1 在“解决方案管理器”中鼠标右击该项目-属性。

5.2 在弹出的“属性页”窗口中,先后选择:VC++目录-包含目录-右面的下拉箭头-编辑,弹出“包含目录”对话框

5.3 添加默认包含文件所在的目录
在弹出的“包含目录”对话框中,点击看上去像文件夹一样的第一个图标,这时,下面就多出来一个空行,再点击空行右边的“...”图标。这样就出现了常规的“选择目录”对话框,因属常规操作就不再贴图了。
这里要强调的是,要添加头文件的包含目录有三个。
第一个是C51标准库的头文件所在目录,我的机子中这个目录是“C:\C:\Keil_v5\C51\INC”。
第二个是所使用芯片的.h文件所在目录,例如我是用的STC8.h,这个头文件在安装Keil的目录内,例如下图第一个白框中显示半行的哪个目录,在我的电脑中具体是“C:\Keil_v5\C51\INC\STC”,这样就可让VS找到项目c文件中#include <stc8.h>所指的stc8.h了,编辑时VS就可自动提示stc8.h中的内容了。
第三个要添加的目录是你这个项目中自己添加的.h文件所在的目录,如果这些.h文件放置到多个目录中,还要逐个添加进来,这样VS就可找到项目c文件中自定义的那些头文件了,这些头文件形如#include "stc8_abc.h"。
至此,网络上提供的办法就结束了。但是,VS仍然不认sfr、sbit、bit等C51特有的数据类型,在这些类型下面有红色波浪线的提示到在其次,主要问题是VS不认这些数据类型,编辑时的自动提示中就不会出现这些内容。

第三步:让VS识别sfr、sbit、bit。
6. 让VS识别sfr、sbit、bit等数据类型,进而在编辑时可进行自动提示。
这里用到的主要是预处理中条件编译的相关内容,有2个方面的工作需要做。
6.1 在VS的“预处理器”中加入特有的预处理器定义符号
我这里加入的是“_keil_vs_”,这个符号怎么写不重要,重要的是keil中永远用不到即可。这个符号仅仅加在VS项目中,而不加入到Keil编辑器中,要达到这样的目的:使用这个标记定义的内容只有VS认识,keil不认识。
在5.2中“属性页”中不进入“VC++目录”,而是进入“C/C++”-预处理器-预处理器定义-右边下箭头-编辑,在“预处理器定义”对话框中输入这个符号,然后保存退出。


6.2 在Keil安装目录找到所使用芯片的.h文件,并进行修改。
如5.3所述,我使用芯片的.h文件,在“C:\Keil_v5\C51\INC\STC”内,文件名是“STC8.h”。开打这个文件,在文件开头键入以下内容。
#ifdef _keil_vs_
typedef unsigned char sfr;//仅用于vs编辑Keil文件
typedef unsigned char sbit;//仅用于vs编辑Keil文件
typedef unsigned char bit;//仅用于vs编辑Keil文件
#endif // _keil_vs_
下面贴个图:

其中,最关键的就是使用 #ifdef 判断预处理器中是否定义了_keil_vs_这个符号了。
对于VS,刚才已经在预处理器中进行了定义,所以对于VS来说sfr、sbit、bit就被typedef为unsigned char类型了,VS遇到这几个类型就会认为是unsigned char类型,这样就实现了VS识别的目的,也能进行自动提示了。
对于keil来说,因为并没有将_keil_vs_这个符号添加进预处理器,所以这几个在#ifdef/#endif中包含的几个typedef不起任何作用。这样,就实现了VS和Keil的兼顾,VS既能识别并自动提示,又不对keil产生任何影响。
实际上,可以typedef为任何vs识别的类型,不一定必须是unsigned char。如果有其他类似需要也可按此处理。
至此,大功告成!
下面贴一个效果图,当键入sbu过程中,VS会出现SBUF的自动提示:

如何发挥Visual Studio 2019强大的编辑功能轻松编辑Keil项目的更多相关文章
- Visual Studio 2019 XAML Hot Reload功能介绍
Visual Studio 2019提供了XAML Hot Reload功能,这个功能可以让WPF程序运行以后仍然可以修改XAML代码,并实时显示. XAML Hot Reload功能在Blend F ...
- Visual Studio 2019 RC入门
介绍 在本文中,让我们看看如何开始使用Visual Studio 2019 RC.Microsoft现已发布Visual Studio Release Candidate,现在可以下载了.最初,Mic ...
- Visual Studio 2019 RC
Visual Studio 2019 RC入门 介绍 在本文中,让我们看看如何开始使用Visual Studio 2019 RC.Microsoft现已发布Visual Studio Release ...
- visual studio 2019 + cmake 实现windows linux跨平台开发环境搭建
visual studio 2019开始支持cmake跨平台开发. 以前cmake项目需要先生成vs项目,然后vs直接使用vs项目开发.现在可以直接用vs2019创建或打开cmake项目. 使用vis ...
- C++ 与 Visual Studio 2019 和 WSL(四)——库组件
C++ 与 Visual Studio 2019 和 WSL (库组件) Reference 在 C++ 项目中使用库和组件 | Microsoft Docs 演练:创建和使用自己的动态链接库 (C+ ...
- 强大的VS插件CodeRush发布v19.1.4|支持Visual Studio 2019
CodeRush是一个强大的Visual Studio .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验. [CodeRush for Visual Studio v19.1. ...
- “宇宙最强” IDE,Visual Studio 2019 正式发布
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 本文由葡萄城翻译并发布 今天凌晨Visual Studio 2019已经正式发布,现在已经可以下载了.使用V ...
- 【转载】“宇宙最强” IDE,Visual Studio 2019 正式发布
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 本文由葡萄城翻译并发布 今天凌晨Visual Studio 2019已经正式发布,现在已经可以下载了.使用V ...
- Visual Studio 2019 正式发布,重磅更新,支持live share
如约而至,微软已于今天推出 Visual Studio 2019 正式版,一同发布的还有 Visual Studio 2019 for Mac. Visual Studio 2019 下载地址:htt ...
随机推荐
- Nginx+uWSGI+Python+Django构建必应高清壁纸站
写在前面 做这个网站的初衷是因为,每次打开必应搜索搜东西的时候都会被上面的背景图片吸引,我想必应的壁纸应该是经过专业人员精选出来的,我甚至会翻看以前的历史图片,唯一美中不足的是必应的首页只能查看最多7 ...
- 如何使用python进行自动网上考试
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: HIS Hacker PS:如有需要Python学习资料的小伙伴可以 ...
- 熬夜整理出来的干货:Python+Pycharm+PyQT5可视化程序设计入门
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:朱淑强 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...
- [linux][nginx] 常用
原文链接http://www.cnblogs.com/codingcloud/p/5095066.html 启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root ...
- Java中Random类
Random:产生随机数的类 构造方法: public Random();没有给种子,用的是默认种子,是当前时间的毫秒值. public Random(long seed);给出指定的种子 //给定种 ...
- 分享一个404页面(猴子动态SVG图)
说明 在CSDN看到的一个404界面,简洁大气非常棒我的个人网站已经用上了! 代码 防止原页面失效,代码 粘贴在下面 <!DOCTYPE html> <html lang=" ...
- TensorFlow keras vgg16net的使用
from tensorflow.python.keras.applications.vgg16 import VGG16,preprocess_input,decode_predictions fro ...
- go的 三个点 ...
这三个点,比较任性,可前可后,可攻可守... 举2个栗子: 1.func sub(arg ...int) (total int){} 2.argsArr = apend(argsArr[:3], ar ...
- Hbase的安装与基本操作
简介: 1安装 HBase 本节介绍HBase的安装方法,包括下载安装文件.配置环境变量.添加用户权限等. 1.1 下载安装文件 HBase是Hadoop生态系统中的一个组件,但是,Hado ...
- java内存模型(JMM)和happens-before
目录 重排序 Happens-Before 安全发布 初始化安全性 java内存模型(JMM)和happens-before 我们知道java程序是运行在JVM中的,而JVM就是构建在内存上的虚拟机, ...