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. idea如何实现Servlet接口

    idea如何实现Servlet接口 project structure ---> Libraries ---> 点击加号+ ----> 找到安装tomcat的目录,再找lib下的se ...

  2. Eclipse拷贝动态的web工程

    1.选中需要拷贝的工程,CTRL+C,然后CTRL+V 2.在web动态工程中,还需要选中新拷贝工程,右键选中properties,然后搜索web,--->Web Project Setttin ...

  3. 使用docker buildx打包发布多平台镜像

    2022-07-07 个人比较喜欢影视作品,下载了大量的剧集视频,有些文件的命名不规范,就需要重新命名,之前是用的一款 renamer 客户端软件,用起来不太爽就自己做了个 bs 架构的重命名软件并开 ...

  4. 最强人工智能 OpenAI 极简教程

    大家好哇,新同学都叫我张北海,老同学都叫我老胡,其实是一个人,只是我特别喜欢章北海这个<三体>中的人物,张是错别字. 上个月安利了一波:机器学习自动补全代(hán)码(shù)神器,然后就 ...

  5. java面试题(2022最新)

    1.String是基本数据类型么?不是基本数据类型,byte int char long flout duable boolem short 2.int 和integer区别int是基本数据类型,in ...

  6. C#程序设计的6大原则

    设计模式:面向对象语言开发过程中,遇到各种场景和问题,解决方案和思路沉淀下来,就是设计模式.俗称,套路 设计模式的六大原则:理解为面向对象语言开发过程中推荐的一些指导性的原则,通俗的说是套路的 套路 ...

  7. python在管道中执行命令

    简介 在实际开发中,可能在执行命令过程中,需要在命令的管道中输入相应命令后继续执行,因此需要在执行命令后在命令的管道中输入相应指令 方法一 直接使用communicate向管道传入所需指令,注意如果是 ...

  8. SpringBoot集成文件 - 如何使用POI导出Word文档?

    前文我们介绍了通过Apache POI导出excel,而Apache POI包含是操作Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.所以 ...

  9. mysql导出bug备注

    注:yiicms库和area表均存在

  10. 6.6 NOI 模拟

    \(T1\)括号序列 --那是,朝思夜想也未尝得到的自由 一个比较常见的转化,考虑如何判断前一段和后一段能够拼成一个合法的括号序列 充要条件: 前半部分,'('看为\(1\), ')'看为\(-1\) ...