本文地址: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项目的更多相关文章

  1. Visual Studio 2019 XAML Hot Reload功能介绍

    Visual Studio 2019提供了XAML Hot Reload功能,这个功能可以让WPF程序运行以后仍然可以修改XAML代码,并实时显示. XAML Hot Reload功能在Blend F ...

  2. Visual Studio 2019 RC入门

    介绍 在本文中,让我们看看如何开始使用Visual Studio 2019 RC.Microsoft现已发布Visual Studio Release Candidate,现在可以下载了.最初,Mic ...

  3. Visual Studio 2019 RC

    Visual Studio 2019 RC入门 介绍 在本文中,让我们看看如何开始使用Visual Studio 2019 RC.Microsoft现已发布Visual Studio Release ...

  4. visual studio 2019 + cmake 实现windows linux跨平台开发环境搭建

    visual studio 2019开始支持cmake跨平台开发. 以前cmake项目需要先生成vs项目,然后vs直接使用vs项目开发.现在可以直接用vs2019创建或打开cmake项目. 使用vis ...

  5. C++ 与 Visual Studio 2019 和 WSL(四)——库组件

    C++ 与 Visual Studio 2019 和 WSL (库组件) Reference 在 C++ 项目中使用库和组件 | Microsoft Docs 演练:创建和使用自己的动态链接库 (C+ ...

  6. 强大的VS插件CodeRush发布v19.1.4|支持Visual Studio 2019

    CodeRush是一个强大的Visual Studio .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验. [CodeRush for Visual Studio v19.1. ...

  7. “宇宙最强” IDE,Visual Studio 2019 正式发布

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 本文由葡萄城翻译并发布 今天凌晨Visual Studio 2019已经正式发布,现在已经可以下载了.使用V ...

  8. 【转载】“宇宙最强” IDE,Visual Studio 2019 正式发布

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 本文由葡萄城翻译并发布 今天凌晨Visual Studio 2019已经正式发布,现在已经可以下载了.使用V ...

  9. Visual Studio 2019 正式发布,重磅更新,支持live share

    如约而至,微软已于今天推出 Visual Studio 2019 正式版,一同发布的还有 Visual Studio 2019 for Mac. Visual Studio 2019 下载地址:htt ...

随机推荐

  1. 008-进制-C语言笔记

    008-进制-C语言笔记 学习目标 1.[掌握]include预处理指令 2.[掌握]多文件开发 3.[了解]认识进制 4.[掌握]进制之间的互相转换 5.[掌握]原码,反码,补码 6.[掌握]位运算 ...

  2. AJ学IOS(09)UI之UIScrollView代理触摸实现_图片缩放

    AJ分享,必须精品 先看效果 代码 // // NYViewController.m // 05-放大缩小图片UIScrollView // // Created by apple on 15-3-2 ...

  3. Python工业互联网监控项目实战3—websocket to UI

    本小节继续演示如何在Django项目中采用早期websocket技术原型来实现把OPC服务端数据实时推送到UI端,让监控页面在另一种技术方式下,实时显示现场设备的工艺数据变化情况.本例我们仍然采用比较 ...

  4. RedHat下安装Ecshop

    1. 设置虚拟机 2. 创建文件夹 mkdir /mnt/cdrom 3. 加载LINUX安装光盘 mount /dev/cdrom /mnt/cdrom 4. 进入安装程序目录 cd /mnt/cd ...

  5. 一个好的olap框架

    一.何为一个好的olap框架? 框架大概分为两种: (1)底层技术框架,专注于抽象底层技术,如网络通信netty.中间件kafka等 (2)开发人员框架,专注于提高开发效率,如spring的面向切面和 ...

  6. pytorch seq2seq闲聊机器人加入attention机制

    attention.py """ 实现attention """ import torch import torch.nn as nn im ...

  7. 电脑Win10晚上让它更新,为何第二天开机蓝屏?

    大家好,欢迎来到<电脑讲堂>,我是主持人高帅帅.PS:没错,就是那个人见人爱,花见花开的高帅帅. 话说,在一个月黑风高的夜晚,我晚上离开实验室,离开前看到了电脑的系统更新提醒,就顺手点了一 ...

  8. 干货福利:如何使用Python中Django模板?

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 穆胜亮 篇文章将学习如何使用Django模板.模板是在Django ...

  9. PHP入门-1

    基本数据类型: 1.整形 2.浮点型 3.字符串 4.布尔型 5.数组和对象 6.null 7.资源类型 8.伪类型 由于php是弱语言,所以他的数据类型不用自己来定义.定义一个数据类型,$name ...

  10. elementaryos5安装chrome,修复依赖

    1.首先去下载个chrome:https://www.google.cn/chrome/ 2.尝试安装chrome:sudo dpkg -i google-chrome-stable_current_ ...