0. 前言

建议结合视频阅读哦

Visual Studio 2022 Community 不完全攻略

有问题或者意见欢迎评论 !

1. 下载&安装

Visual Studio Community 是免费使用的.

下载最新版 (目前是 2022 , 一定要去官网下载 ! )

https://visualstudio.microsoft.com/vs/community/

下载完打开 Visual Studio Installer.

  • 在安装页面, 左下角可以修改安装位置 (下载缓存可以不保留, 但必须要和本体放在不同的文件夹中).
  • 编写基本的 C++ 程序只需勾选 使用 C++ 的桌面开发 这个工作负荷.
  • 语言包自行选择. 建议使用英文界面强迫自己学英语.
  • 一般都会选择黑暗模式.
  • 安装完重启电脑.
  • 使用 VS 2022 需要注册一个微软账号.

2. 认识 Visual Studio

2.1. 创建一个空项目

Create a new project => Empty Project => 勾选 Place Solution and Project in the same directory ( VS 的目录结构比较混乱, 稍后会介绍更改的方式).

如果打开不是 Start Window 而是之前打开的项目, 可以进入 Tools => Environment => General, 在 On startup, open: 选项中选择 Start window.

2.2. 选项卡

各个选项卡都是可以拖动.

既可以放大缩小又可以改变位置, 还可以固定或浮动.

一般来说 Solution Explorer 是一个比较重要的选项卡, 如果意外关闭可以在上方的菜单栏重新打开: View => Solution Explore . 你也可以使用快捷键 Ctrl+Alt+L .

2.3. Solution Configuration & Platform

在上方菜单栏默认有 Debug 和 x64 两个选项, 可以分别切换成 Release 与 x86.

Release 模式会自动优化你写的代码, Debug 便于调试.

Release 模式生成的 .exe 文件可以不依赖其他文件在别人的电脑上直接运行, Debug 不行.

x64 和 x86 分别代表在 64 位和 32 位平台下编译运行.

2.3. 两个绿箭头和一个小火苗

从代码到运行程序经历两个阶段

  1. Compile --- 把一个个 .cpp 文件编译成电脑读得懂的二进制文件 - Ctrl+F7
  2. Build --- 把一个个二进制文件 link 在一起生成 .exe 可执行文件 - Ctrl+Shift+B

代码的语法错误在 Compile 阶段就能被 Compiler 识别, 但一些 linker 错误要到 Build 阶段会被 linker 识别.

当然, 更多的错误只能靠你自己识别.

  • 实心的绿箭头是 Compile + Build + Run(运行生成的 .exe 可执行文件) - F5.
  • 空心的绿箭头是跳过一个个调式断点的 Compile + Build + Run(运行生成的 .exe 可执行文件), 这里还没讲到调试, 所有不用深究 - Ctrl+F5.
  • 红色的小火苗是 Hot Reload, 简单地说就是在不终止当前的运行进程下, 重新 Compile + Build. 例如在一个循环中, 已经循环了两次, 这时你修改了循环中的部分代码, 然后 Hot Reload, 下一次循环就会以你改完的代码运行.

3. 界面设置

3.1. 滚动条

右键滚动条 => Scroll Bar Options

可以更改滚动条的显示方式.

3.2. 字体

Tools => Options => Enviroment => Fonts and Colors

可以更改字体样式, 大小和颜色.

3.3. 主题

Tools => Theme

4. Hello World !

右键 Solution Explorer 下的 Source Files, Add => New Item...

选择 C++ File, 然后重命名.

注意: 你要创建什么类型的文件就选择什么类型, 不要创建了一个 C++ File 然后在外部改后缀名, 这会导致 linker 错误.

在编写程序的时候, 要注意如下一些快捷键:

  1. 代码自动补全: Tab
  2. 注释 / 取消注释选中行: Ctrl+K+C / Ctrl+K+U
  3. 多行编辑: Ctrl+Alt+LeftClick
  4. 变量 / 对象 / 类 / ... 重命名: Ctrl+R+R

运行完可能什么都没有, 或者有个黑色窗口闪了以下. 这是正常的, 因为你的程序结束了! 如果你希望程序结束后保持控制台窗口打开, 就在上方点击 Tools => Options => Debugging => 关闭 Automatically close the console when debugging stops .

5. 快捷键设置

Tools => Options => Enviroment => KeyBoard

找到想要做的操作, 在键盘上按出想要基于的快捷键, 查看有没有冲突.

6. 代码风格设置

这里以 C++ 为例.

  1. Tools => Options => Text Editor => C/C++ => General

    里面有若干设置选项, 其中可能 Automatic brace completion 比较重要 (如果喜欢所有右括号都手动打而不是自动补全的话可以考虑关闭这个选项).

  2. Tools => Options => Text Editor => C/C++ => Tabs

    用来设置 Tab 键是打一个 '\t' 还是 n 个 ' '. 我个人习惯四个空格.

  3. Tools => Options => Text Editor => C/C++ => Advanced

    这里面有很多非常重要的设置选项. 其中关于 IntelliSense 的设置直接关系到自动代码补全. 更改前务必查阅足够多的资料, 并且先保存好先前的设置.

  4. Tools => Options => Text Editor => C/C++ => Code Style

    General: 更改注释格式 / 注释生成方式.

    Formatting: 各种格式自定义设置, 比如 { 跟在 函数名同行还是新一行.

  5. Tools => Options => Text Editor => C/C++ => IntelliSense

    VS 2022 新增的 inline hints 设置.

7. 文件目录

前面提到 VS 的默认文件生成目录非常混乱, 右键 Solution Explorer 中的 Project 名, 选择 Open Folder in File Explorer 打开当前项目处在的文件夹.

7.1. 几个文件的说明

正常情况下当前文件夹内会出现这样几个文件:

  • .vs 文件夹(隐藏)
  • x64 文件夹
  • Project1.sln
  • Project1.vcxproj
  • Project1.vcxproj.filters
  • Project1.vcxproj.user
  • Source.cpp

这里要说明的是,

  1. .sln 文件是一个 Visual Studio project 的入口. 当你想打开一个别人的 project , 不要从 Start Window 打开项目文件夹, 而应该直接运行 .sln 文件.

  2. .vcxproj 文件时项目不可缺少的文件. 参考官方文档:

    MSBuild is the default project system in Visual Studio; when you choose File > New Project in Visual C++ you're creating an MSBuild project whose settings are stored in an XML project file that has the extension .vcxproj.

    因此如果你想要开源 Visual Studio 项目, 除非只想发布源代码, 否则至少应当保留 .sln 文件和 .vcxproj 文件.

  3. 我们在工程中将 Source.cpp 建立在一个叫 Source Files 的文件夹内, 但是当前的目录里没有这个文件夹. 这是因为这些文件夹其实是虚拟的 Filter (筛选器), 现实中所有文件都被堆在一起. 这其实不是一个很好的文件管理方式. 哪些文件归于哪个 filter 的信息都储存在 .filters 文件内部. 所以如果你的项目不依赖 filter, 开源时可以忽略 .filter 文件.

    When Solution Explorer is used to add a file to a project, the filters file (.vcxproj.filters) defines where in the Solution Explorer tree view the file is added, based on its file name extension.

  4. .user 文件直接参考官方文档就行了, 储存的是一些断点信息.

    A user file (.vcxproj.user) stores user-specific properties, for example, debugging and deployment settings. The vcxproj.user file applies to all projects for a particular user.

  5. .vs 文件夹内部储存了 template bar information 以及一些其他内容, 这些都不需要被加入 Source Control.

  6. x64 文件夹内部储存了所有的生成文件.

7.2. 更好的文件管理

这里主要分为两部分, 代码文件的管理和生成文件的管理.

所有代码文件都堆在 .filter 文件夹内并不整洁.

在 Solution Explorer 内点击 Show All Files (如果看不到请拖大选项卡), 显示文件夹内确实的情况.

在空白部分右键 => Add , 添加两个文件夹: header 和 source 分别存放头文件和源文件.

右键 source 文件夹 => Add => C++ File. 这样就在 source 文件夹内部添加了一个 .cpp 文件. 你也可以在别的地方新建然后拖动进去.

对于生成文件的管理, 右键 Solution Explorer 中的项目名 => Properties => Output Directory 改为: $(SolutionDir)\bin\$(Platform)\$(Configuration)\ ; Intermediate Directory 改为: $(SolutionDir)\bin\intermediate\$(Platform)\$(Configuration)\ . 这样改动, 生成的中间文件和可执行文件就会依据运行环境不同区分开.

8. 调试

在开发大项目的时候, 调试是必不可少的工具. 在调试时请保证处于 Debug 环境而不是 Release 环境 !

8.1. 添加断点

断点顾名思义就是程序运行到这行会停下来 (还没执行这行). 你可以在多个地方添加断点.

8.2. Step into & Step Over

F5 运行程序, 到这行确实停下来了. 接下来想一步步让程序往下走, 可以按 F11(Step into) 或者 F10(Step over). 前者会在调用用户定义的函数的地方跳入该函数; 后者会直接执行完该函数进入下一行. 需要注意的是, Step into 不会跳入由 "<>" 头文件 (标准库) 中定义的函数.

8.3. 在断点间跳跃

当到达一个断点程序暂停后, 再按 F5 就会跳到下一个可能到达的断点 --- 没有后续可能到达的断点就直接运行完程序.

8.4. 调试看什么 ?

这是个好问题. 在调试过程中, 点击上方 Debug => Windows => Locals 可以打开 Locals 窗口监测各变量的数值变化情况. 这是非常非常有用的 --- 只要你又耐心看.

对于指针变量储存的数组地址, Locals 窗口只会显示指针所指唯一元素的地址. 解决方案是 Debug => Windows => Watch 1/2/3/4 打开一个 Watch 窗口, 然后双击 Add item to watch 输入诸如 ptr, 10 , 就能看到 ptr 所指的 10 个元素.

9. 对 C 库函数的兼容问题

部分 C 语言函数在 Visual Studio 中使用会报错, 这是考虑到内存安全问题. 我的建议是, 如果你自己写项目 (一直在 Visual Studio 中写), 那就遵循他的规则使用改进的函数, 比如 scanf_s() , strcpy_s() .

如果这是一个开源项目, 可能有别的编译器参与, 就在 Solution Explorer 中右键项目名 => Properties => C/C++ => Preprocessor, 在 Preprocessor Definitions 中添加一条 _CRT_SECURE_NO_WARNINGS . 这样 (仅在) 当前这个项目中允许了使用原生的 C 库函数.

10. <bits/stdc++.h>

Visual Studio 没有添加这个万能头文件. 实际上除非竞赛, 真正团队项目开发的时候是不会用这个头文件的. 想要使用 <bits/stdc++.h> 需要自己手动添加到头文件文件夹中.

10.1. C++ 标准 & 宏变量 __cplusplus

在 C++ 中定义了 __cplusplus 这宏变量表示当前的 C++ 标准.

在随便一个地方打 __cplusplus 然后把鼠标移上去, 会跳出 Expands to 199711L 这个提示.

在 Solution Explorer 中右键项目名 => Properties => General . 这里面的 C++ Language Standard 可以选择用不同的标准编写 C++ 程序. 但是无论切换到什么标准, __cplusplus 总是 Expands to 199711L . 用微软自己的话说:

Because a lot of existing code appears to depend on the value of this macro matching 199711L, the compiler doesn't change the value of the macro unless you explicitly opt in by using the /Zc:__cplusplus compiler option.

改不改很多时候都没什么差别, 但是 C++ 17 和 20 弃用了若干标准库, 导致如果 __cpluscplus 不扩展到正确数值, <bits/stdc++.h> 会报错.

解决方法如下:

在 Solution Explorer 中右键项目名 => Properties => C/C++ => Command Line , 在 Additional Options 中 添加一句: /Zc:__cplusplus , 确定即可.

10.2. 添加 bits/stdc++.h

在以下链接下载我修改过的 bits/stdc++.h

随便 inlcude 一个标准库头文件, 鼠标点一下这个头文件, 按 F12 Go To Document, 右键右上角弹出的 tab 标签, 选择 Open Containing Folder . 在这个文件夹内新建一个 bits 文件夹, 再把下载好的 bits/stdc++.h 扔进去, 就大功告成了.

Visual Studio 2022 Community 不完全攻略的更多相关文章

  1. [翻译]正式宣布 Visual Studio 2022

    原文: [Visual Studio 2022] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意见,或 ...

  2. 它来了!!!有史以来第一个64位Visual Studio(2022)预览版将在今夏发布!

    美国时间2021年4月19日,微软产品研发部一位负责人Amanda Silver在其博客上发布一则<Visual Studio 2022>的消息,表示将在今年(2021年)夏天发布Visu ...

  3. .NET6系列:微软正式宣布Visual Studio 2022

    系列目录     [已更新最新开发文章,点击查看详细] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意 ...

  4. .NET6系列:Visual Studio 2022 线路图

    系列目录     [已更新最新开发文章,点击查看详细] 在上一篇博客<Visual Studio 2022>中介绍了VS2022的性能改进与重要功能.本文主要介绍在 Visual Stud ...

  5. 微软发布了Visual Studio 2022 Preview 1 以及.NET 6 Preview 5

    Microsoft 今天宣布了Visual Studio 2022 的第一个预览版,并且同时也发布了.NET 6 Preview 5. https://devblogs.microsoft.com/v ...

  6. Visual Studio 2022 Preview 1 和.NET 6 Preview 5 正式发布

    具有里程碑意义的Visual Studio 2022 Preview 1正式发布,重点是64位,而没有增加新功能,并且同时也发布了.NET 6 Preview 5. https://devblogs. ...

  7. 乘风破浪,遇见Visual Studio 2022预览版(Preview),宇宙最强开发者工具首次迎来64位版本

    简介 众所周知,我们从官方新闻来看,对Visual Studio 2022最大的期待莫过于:其是首个64位的Visual Studio,这个宇宙最强开发者工具一脚迈入了新的阶段. https://vi ...

  8. Visual Studio 2022 预览版3 最新功能解说

    我们很高兴地宣布Visual Studio 2022 的第三个预览版问世啦!预览版3 提供了更多关于个人和团队生产力.现代开发和持续创新等主题的新功能.在本文中,我们将重点介绍Visual Studi ...

  9. 微软发布了Visual Studio 2022 RC版,并将在11月8日发布正式版

    微软今天发布了Visual Studio 2022 最接近正式发布的RC版本,同时宣布在11月8日发布正式版,届时将在线上发布虚拟的发布活动,具体参见:https://devblogs.microso ...

随机推荐

  1. Tapdata 实时数据融合平台解决方案(二):理解数据中台

    作者介绍:TJ,唐建法,Tapdata 钛铂数据 CTO,MongoDB中文社区主席,原MongoDB大中华区首席架构师,极客时间MongoDB视频课程讲师. 数据中台定义: 以打通部门或数据孤岛的统 ...

  2. C语言指针-小结

    1) 指针变量可以进行加减运算,但是指针变量的加减运算并不是加上或减去一个数,而是跟指针指向的数据类型有关,数据类型在系统中占了多少个字节,指针+1后就向后移动了多少个字节. 2) int *poin ...

  3. MIT 6.824 Lab2C Raft之持久化

    书接上文Raft Part B | MIT 6.824 Lab2B Log Replication. 实验准备 实验代码:git://g.csail.mit.edu/6.824-golabs-2021 ...

  4. 输入一个url全过程详解

    1. 用户在浏览器中输入url,浏览器接收到url. 2.浏览器接收到这个url之后,会根据这个url会先查看缓存,如果有缓存且没有过期的话直接提供给客户端,完成页面渲染. 3.否则浏览器就会通过DN ...

  5. Webpack干货系列 | 怎么运用 Webpack 5 处理css/scss/sass、less、stylus样式资源

    程序员优雅哥简介:十年程序员,呆过央企外企私企,做过前端后端架构.分享vue.Java等前后端技术和架构. 本文摘要:主要讲解webpack 5 如何高效处理CSS 资源.scss/sass 资源.l ...

  6. TCP协议调试工具TcpEngine V1.3.0使用教程

    简介   这里说的TCP协议调试定义是在开发长连接TCP协议应用时,为了验证代码流程或查找bug,需要与对端交互数据过来,当需要时可以暂停发送:单条发送:跳过发送:正常发送:发送时修改数据等.   T ...

  7. websocket心跳实现

    简介 在实际项目中可能会使用到websocket,在使用过程中可能会存在一种问题就是,当网络异常断开时.或者websocket服务波动时,websocket会断开,导致异常,正常情况下,我们会采用心跳 ...

  8. 一个小 Trick

    平方变两次 一个状态 \(S\) 有一个贡献,所有状态 \(S\) 组成集合 \(U\) . 然后我们要统计下面这个东西 \[ans=\sum_{S\in U}f^2(S) \] 然后我们就可以看作是 ...

  9. 四边形不等式优化 dp (doing)

    目录 1. 四边形不等式与决策单调性 2. 决策单调性优化 dp - (i) 关于符号 1. 四边形不等式与决策单调性 定义(四边形不等式) 设 \(w(x,y)\) 是定义在整数集合上的二元函数,若 ...

  10. Python 函数修饰器

    # 一.用函数修饰函数 #!/usr/bin/python3 def decorate_func(func): def call(*args, **kwargs): print('you have c ...