您的位置:首页 > 编程语言 > C语言/C++

Visual Studio 2019 (VS2019) c++使用指南 (以及代码片段调校,和关于处理万能头文件和scanf、getch、kbhit编译错误的问题)

2020-04-23 12:19 1261 查看

当你看完这篇博文,别忘了给初中生博主一个小小的赞哟~~
注:有关Microsoft Visual Studio 2019详情请访问此网址VS2019
想了解快捷键的朋友请戳这里—>快捷键篇

板块一:Visual Studio 2019 安装及配试指南

首先,进入VS2019官网 官网.下载VS2019,下载完毕后,会有这样一个界面:
选择你自己语言的插件包(这里我选的是自己的语言c++)以及Visual Studio 拓展开发插件包,语言包就选择中文就行了(根据自己的喜好来),然后点击安装就可以了。安装完毕后,打开VS2019,开始的界面会持续5~10秒,请不要担心。进入之后,会有这样一个界面:
点击创建新项目,然后点击空项目,在上方选择自己的编程语言,编译系统就选择windows所有平台,项目类型就选所有项目类型,再点击下一步。
点击下一步后是这样一个界面,可以选择项目名称或位置,这里我们就按照它默认的来,然后再点击创建,我们的第一个项目就新建成功了。
新建成功后,是这样的一片空白,这时,我们只需要右键点击右边资源管理器的源文件文件夹,选择添加,再选择新建项,就可以了。然后选择c++文件,名称就填你自己的文件名称.cpp,那么点击了添加后,就正式创建创建成功了。


创建成功后,你就可以输入自己的代码,然后点击上方的本地Windows调试器,就可以编译运行了。如果有不满意它默认字体和主题的小伙伴,可以点击菜单栏的工具–>选项–>字体和颜色(调字体)以及常规(调主题)进行修改,这里我使用的是consolas字体和深色主题,有不满意字体大小的还可以点击ctrl+滚动鼠标滚轮调节。至此,我们的安装配试就告一段落了

板块二:关于代码片段的snippet文件的编写

当你安装配试完毕后,你会发现:这个软件为什么不能像Dev-C++一样在编辑器选项里添加初始的代码片段,这软件跟Dev-C++相比有什么优势呢?别急,我们是有办法的,首先,你需要了解snippet文件是什么东东:SNIPPET file is a Visual Studio IntelliSense Code Snippet. IntelliSense Code Snippets are XML files with a .snippet file name extension that adhere to the IntelliSense Code Snippet XML schema.翻译后就是:代码片段文件是一个Visual Studio智能感知代码片段。IntelliSense代码片段是扩展名为. Snippet的XML文件,它遵循IntelliSense代码片段XML模式。那么看不懂没关系,我也不是很明白,但我们只要知道它是一种XML文件(注:XML文件),然后了解它的格式就可以编写了,这里我们可以参考一下VS2019自带的snippet文件,点击菜单栏中的工具–>代码片段管理器,然后在语言中选择Visual C++,点击下面框框里的Visual C++,里面就有很多代码片段的snippet文件,这时我们以for循环的for.snippet为例,在框框里点击它,复制他的文件地址,在搜索里搜索一下,再打开就行了。打开后,是这样的:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>for</Title>
<Shortcut>for</Shortcut>
<Description>for 循环的代码片段</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>type</ID>
<Default>size_t</Default>
<ToolTip>控制变量类型</ToolTip>
</Literal>
<Literal>
<ID>index</ID>
<Default>i</Default>
<ToolTip>索引</ToolTip>
</Literal>
<Literal>
<ID>max</ID>
<Default>length</Default>
<ToolTip>最大长度</ToolTip>
</Literal>
</Declarations>
<Code Language="cpp"><![CDATA[for ($type$ $index$ = 0; $index$ < $max$; $index$++)
{
$selected$ $end$
}]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

然后这段代码是什么意思呢,我们来解释一下:

  1. Title,Author和Description,显示在Code Snippets Manager中。
  2. Shortcut,在对应语言的源程序文件中输入Shortcut内容并按TAB键,插入对应的snippet code。
  3. Literal,定义在snippet中可编辑替换的代码片段,ID是snippet中唯一标识符,在Code中ID两侧用$符号表示可以被编辑替换,Default是默认显示的内容。
  4. Language,表明代码类型,如CPP表示C++。
  5. endendend表示snippet代码插入后光标位置。
  6. Ctrl+K,Ctrl+B,Imports导入.snippet。

看不懂?没关系,我们来看一下for循环的案例,首先,前面的不用管,主要是从title开始,那么title里写的就是这个代码片段的名称‘for’,而shortcut就表示输入‘for’再按tab,就可以显示此代码片段,接着description就是对此代码片段的描述,然后直接跳到declarations,这有点类似定义变量,里面括起来的是定义的变量,然后里面的literal就是一个变量,里面包按三个参数,id、default和tooltip,id就是此变量的名称,default是此变量在代码中默认的显示内容,比如for循环的代码里,变量type在代码中的默认显示就是size_t,以此类推,最后tooltip可以看做是对此变量的描述。最后,code language就是此代码的语言,比如我就是cpp,然后在后面<![CDATA[![CDATA[ ]]>最里面的中括号里输入你的代码片段就行了,其中变量要用$$包起来他的变量名,然后就大功告成了。

那么知道了如何写一个snippet文件,我们就要看看在VS2019里怎么操作。首先,和板块一样,新建一个文件,就是右键点击源文件,点击添加,再点击新建项,但是要新建的,是一个XML文件,在Visual C++的web里面,点击XML文件,然后添加,这里我已经给大家写好了我的源代码初始头文件的代码,大家输入进去就可以了

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>ccode</Title>
<Shortcut>ccode</Shortcut>
<Description>c++头文件代码片段</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Code Language="cpp">
<![CDATA[#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#define _CRT_SECURE_NO_WARNINGS 1#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int main(){
return 0;
}]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

输入完毕后,另存为到桌面,注意:后缀要改为.snippet,然后再复制工具–>代码片段管理器中Visual C++文件夹的地址,搜索一下,打开,把此文件拖进去就可以了。那么我这个代码片段是在VS2019中输入ccode,然后点击tab,就可以自动生成这段代码:

#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#define _CRT_SECURE_NO_WARNINGS 1#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int main(){
return 0;
}

至于为什么要加一句#define _CRT_SECURE_NO_WARNINGS 1,我们下一板块再说,那么此时,我们的代码片段设置就结束了,我还给大家留了scanf和printf的代码片段,有需要的朋友可以拿去用。

scanf: (输入scanf点tab)

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>scanf</Title>
<Shortcut>scanf</Shortcut>
<Description>scanf的代码片段</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>type</ID>
<Default>size_t</Default>
<ToolTip>控制变量类型</ToolTip>
</Literal>
<Literal>
<ID>index</ID>
<Default>a</Default>
<ToolTip>索引</ToolTip>
</Literal>
</Declarations>
<Code Language="cpp">
<![CDATA[scanf("%$type$",&$index$);]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

printf:(输入printf点tab)

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>printf</Title>
<Shortcut>printf</Shortcut>
<Description>printf的代码片段</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>type</ID>
<Default>size_t</Default>
<ToolTip>控制变量类型</ToolTip>
</Literal>
<Literal>
<ID>index</ID>
<Default>i</Default>
<ToolTip>索引</ToolTip>
</Literal>
</Declarations>
<Code Language="cpp">
<![CDATA[printf("%$type$",$index$);]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

板块三:关于万能头文件和scanf、getch、kbhit编译错误的问题


那么看完前两个板块,最后一个问题来了,我们用万能头文件时,它显示编译错误,这是因为VS2019没有万能头文件的设定,所以需要我们手动弄一弄。首先找到这条路径:Program Files (x86)–>Microsoft Visual Studio–>2019–>Community–>VC–>Tools–>MSVC–>14.25.28610(此文件夹因设备不同文件名也可能不同)–>include,然后在include文件夹里新建一个文件夹bits(不能取其他文件名),然后返回我们的VS2019,新建一个头文件类文件,在里面输入万能头文件的定义:

#ifndef _GLIBCXX_NO_ASSERT
#include <cassert>
#endif
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>

#if __cplusplus >= 201103L
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdalign>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>
#endif

// C++
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>

#if __cplusplus >= 201103L
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#endif

然后另存为到桌面,文件名为stdc++.h(还是不能取另外的文件名),最后拖到一开始新建的bits文件夹中,就可以了。
关于scanf报错,它说是不合法,那我们只要在头文件前加一段这个代码。

#define _CRT_SECURE_NO_WARNINGS 1

最后,关于getch()和kbhit()报错,只需把getch()改为_getch(),把kbhit()改为_kbhit()。

总结

总的来说,VS2019还是一款不错的编辑软件,因为我也是第一次使用,所以后续有什么问题,我都会再写博客的,那么除了VS2019这款编辑器,我还推荐sublime text 3这款编辑器,有兴趣的朋友可以在CSDN里搜搜。

当你看完这篇博文,别忘了给初中生博主一个小小的赞哟~~

  • 点赞 12
  • 收藏
  • 分享
  • 文章举报
M理论非微扰的拉氏量 发布了2 篇原创文章 · 获赞 16 · 访问量 1496 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: