Visual Studio 2019 (VS2019) c++使用指南 (以及代码片段调校,和关于处理万能头文件和scanf、getch、kbhit编译错误的问题)
当你看完这篇博文,别忘了给初中生博主一个小小的赞哟~~
注:有关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>
然后这段代码是什么意思呢,我们来解释一下:
- Title,Author和Description,显示在Code Snippets Manager中。
- Shortcut,在对应语言的源程序文件中输入Shortcut内容并按TAB键,插入对应的snippet code。
- Literal,定义在snippet中可编辑替换的代码片段,ID是snippet中唯一标识符,在Code中ID两侧用$符号表示可以被编辑替换,Default是默认显示的内容。
- Language,表明代码类型,如CPP表示C++。
- endendend表示snippet代码插入后光标位置。
- 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
- 收藏
- 分享
- 文章举报
- 关于使用VS时出现scanf有错误要改用scanf_s的处理方法
- Sublime Text 3使用指南(以及自制编译系统,代码片段一包通)
- 关于vs使用winddk开发包编译错误问题
- Linux系统平台下关于GCC编译及使用的方法(-Werror,它要求GCC将所有的警告当成错误进行处理 )
- 关于编译4+2版本遇到的不是代码的问题和添加launcher以及svn上传问题
- Linux下使用Eclipse编译C/C++代码时遇到问题的说明
- 关于使用cocoapods管理第三方库,编译错误的问题
- 关于cmake+mingw+yasm+vs 生成工程 编译代码问题总结
- C++中,结构体vector使用sort排序(以及sort参数错误问题)
- VS 2005 中关于编译时使用那种字符集问题 (转载)
- 关于boost在vs中的编译错误的问题的解决
- vs2013 c++代码内出现中文导致编译错误
- 如何使用cocoapods集成ZXing以及编译问题处理
- 关于UEditor插件的使用以及UEditor数据回显问题,数据库存储标签代码前台页面如何解析问题小结
- 关于MFC下使用MTL库编译错误的问题
- Linux系统平台下关于GCC编译及使用的方法 (-Werror,它要求GCC将所有的警告当成错误进行处理
- 编译旧C++代码时,如何处理无法打开iostream.h的错误
- VS 2005 中关于编译时使用那种字符集问题
- 关于VS2013 MFC单文档菜单项设置复选框的出现的问题以及处理方法
- 提高VS使用逼格的快捷键以及一些错误的处理方法