本文地址: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. 【做中学】第一个 Go 语言程序:漫画下载器

    原文地址: 第一个 Go 语言程序:漫画下载器: https://schaepher.github.io/2020/04/11/golang-first-comic-downloader 之前学了点 ...

  2. 《带你装B,带你飞》pytest修仙之路5 - yield操作

    1. 简介 上一篇中,我们刚刚实现了在每个用例之前执行初始化操作,那么用例执行完之后如需要清除数据(或还原)操作,可以使用 yield 来实现.fixture通过scope参数控制setup级别,既然 ...

  3. 用python从0到1制作动态条形图的过程

    大家好,今天我们要讲的是如何使用Pyecharts制作动态排名变化图

  4. Atcoder E - Crested Ibis vs Monster、

    一看到题目就觉得是一个背包问题,但是不知道怎么写. 题解:直接求背包容量为2*h时所需要的花费.然后h~2h都是满足条件的,去最小值即可. code: #include<bits/stdc++. ...

  5. Acid靶机渗透

    Acid渗透靶机实战 攻击机:kali 192.168.41.147 靶机: acid 192.168.41.149 信息收集 ip发现 开启Acid靶机,通过nmap进行局域网存火主机扫描.![]( ...

  6. SUCTF 2019 Upload labs 2 踩坑记录

    SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...

  7. GIT生成ssh(window7系统)——git工具篇

    由于本地git仓库和github仓库直接的传递需要ssh加密的,所以必须要生成ssh,下面是具体的操作步骤: 1.打开GIT命令行,输入命令:ssh-keygen -t rsa -C "yo ...

  8. 《HelloGitHub》第 49 期

    兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...

  9. 2019-2020-1 20199303《Linux内核原理与分析》第八周作业

    Linux如何启动并装载程序 理解编译链接的过程和ELF可执行文件格式 第一步:先编辑一个hello.c 第二步:生成预处理文件hello.cpp gcc -E -o hello.cpp hello. ...

  10. vue2.x学习笔记(二十五)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12677019.html. 过滤器 vue允许开发者自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地 ...