visauvisual studio c编译器怎么弄了,c++?


项目
12/07/2023
Visual Studio 2022 向 Microsoft C++ 环境引入了许多更新和修补程序。 我们添加了一些功能,还修复了编译器和工具中存在的许多 bug 和问题。 Visual Studio IDE 还在性能和工作效率方面进行了重大改进,而且现在作为 64 位应用程序本机运行。有关整个 Visual Studio 中新增功能的详细信息,请参阅 Visual Studio 2022 中的新增功能。 有关 C++ 文档中新增功能的信息,请参阅 Microsoft C++ 文档:新增功能。Visual Studio 版本 17.8 中 C++ 的新增功能简而言之,一些新功能包括:“输出”窗口中的 C++ 结构化诊断,以及一个新的问题详细信息窗口,该窗口提供有关错误的详细信息。 有关详细信息,请参阅《结构化 SARIF 输出》和《问题详细信息窗口》。
一项功能,可让你在编译代码之前可视化类、结构、联合、基类型或枚举的大小和对齐方式。 将鼠标悬停在标识符上,“快速信息”将显示大小和对齐信息。
一项功能,建议何时标记成员函数 const,因为它们不会修改对象的状态。 将鼠标悬停在成员函数上,然后单击灯泡图标将函数标记为 const。
Visual Studio 现在提示你通过函数名称旁边显示的螺丝刀图标将全局函数标记为静态。 单击螺丝刀图标将函数标记为静态。
未使用的 #include 指令在编辑器中灰显。 可以将鼠标悬停在灰显的 include 上,并使用灯泡菜单删除该 include 或所有未使用的 include。 你还可以为当前通过其他标头间接包含的实体添加 #include 指令。 有关详细信息,请参阅《在 Visual Studio 中清除 C/C++ Include》。
更多 Unreal Engine 支持:Unreal Engine 测试适配器允许你发现、运行、管理和调试 Unreal Engine 测试,而无需离开 Visual Studio IDE。
使用 Unreal Engine 代码片段,可以在成员列表中找到作为代码片段的常见的 Unreal Engine 构造。
Build Insights 现已与 Visual Studio 2022 集成,并使用 MSVC 处理 MSBuild 和 CMake 项目。 你现在可以查看有关函数编译的其他信息,例如编译所花费的时间和 ForceInline 的数量。
远程 Linux 单元测试支持现在允许从 Visual Studio 的测试资源管理器在远程 Linux 计算机上运行 CTest 和 GTest 测试,就像本地测试一样。
有关 Visual Studio 17.8 中 C++ 新增功能的综合摘要,请参阅 Visual Studio 2022 17.8 中面向 C++ 开发人员的新增功能。有关 Visual Studio 17.8 IDE 中的新增功能的摘要,请参阅《Visual Studio 2022 版本 17.8 发行说明》。Visual Studio 版本 17.7 中的 C++ 新增功能有关 Visual Studio 17.7 中 C++ 新增功能的摘要,请参阅 Visual Studio 2022 17.7 中面向 C++ 开发人员推出的新增功能。简而言之,一些新功能包括:更快的调试会话和更快的项目加载速度
宏扩展的分步可视化
适用于 Linux 的 Windows 子系统 (WSL) 的一键式下载
改进了对 Doxygen 注释的支持
用于游戏开发的 C++ 生成见解
已为 C 编译器添加 /std:clatest。
Unreal Engine 项目改进,例如更快的 IntelliSense 和语法着色、查找所有 Unreal Engine 蓝图引用的功能等。
有关特定于游戏开发的新增 C++ 功能的摘要,请参阅释放适用于 C++ 游戏开发的 Visual Studio 2022 的强大力量有关 Visual Studio 17.7 IDE 中的新增功能的摘要,请参阅 Visual Studio 2022 版本 17.7 发行说明。Visual Studio 版本 17.6 中的 C++ 新增功能有关 Visual Studio 17.6 中 C++ 新增功能的摘要,请参阅 Visual Studio 2022 17.6 中面向 C++ 开发人员推出的新增功能。简而言之,一些新功能包括:CMake 脚本调试、对高级着色语言 (HLSL) 的内置支持、Unreal Engine 日志查看器、C++/CLI 项目中对 C++20 的初始支持、vcpkg(现默认添加),以及一些适用于范围的 C++23 标准库功能。 若要查看添加到该标准库的新功能的完整列表,请参阅 STL 更改日志。有关 Visual Studio 17.6 IDE 中的新增功能的摘要,请参阅 Visual Studio 2022 版本 17.6 发行说明。Visual Studio 版本 17.5 中 C++ 的新增功能有关 Visual Studio 版本 17.5 中 C++ 新增功能的摘要,请参阅 Visual Studio 2022 17.5 中面向 C++ 开发人员推出的新增功能。
有关 Visual Studio IDE 版本 17.5 中的新增功能和 bug 修复的摘要,请参阅 Visual Studio 2022 版本 17.5 发行说明。std::move、std::forward、std::move_if_noexcept 和 std::forward_like 现在不会在生成的代码中生成函数调用,即使在调试模式下也是如此。 此更改可避免命名强制转换在调试版本中导致不必要的开销。 /permissive-(或表示它的选项,例如 /std:c++20 或 std:c++latest)是必需的。
添加了 [[msvc::intrinsic]] 以支持上述项。 你可以将此属性应用于由单个强制转换组成的非递归函数,该函数仅采用一个参数。
在允许终端 I/O 的集成终端中添加了对 Linux 控制台的支持。
添加了对 C11 原子基元 (<stdatomic.h>) 的初始实验性支持。 可在 /std:c11 模式或更高版本中使用 /experimental:c11atomics 选项来启用此实验性功能。
向生存期检查器添加了一组新的实验性高置信度检查,以减少干扰。
一个新的预览功能“远程文件资源管理器”,可让你在 VS 中查看远程计算机上的文件目录,并可在其中上传和下载文件。
更改了 Visual Studio 随附的 CMake 可执行文件的版本控制,以与 Kitware 版本匹配。
向 CMake 项目模板添加了对热重载的支持。
C++ 的“转到定义”现在使用更精细的指示器,表明操作需要更多的时间,取代了以前版本中的模式对话框。
已开始推出一项试验,在 C++ 自动完成和成员列表中提供更多智能结果。 此功能以前称为“预测 IntelliSense”,但现在使用一种新的表示方法。
我们现在提供带 LLVM 工作负载的本机 Arm64 Clang 工具集,允许在 Arm64 计算机上进行本机编译。
添加了图像查看扩展的本地化(此扩展在市场中提供,并且未通过 Visual Studio 安装程序捆绑)。
添加了在当前运行的开发人员容器中打开终端窗口的支持。
对 IntelliSense 宏扩展进行了多项改进。 值得注意的是,我们在更多上下文中启用了递归扩展,并在弹出窗口中添加了将扩展复制到剪贴板或内联扩展宏的选项。
串行监视器现在支持并发监视。 并发监视允许同时并排监视多个端口。 按加号按钮可打开另一个串行监视器并开始使用。
现在可以查看在 Unreal Blueprint 资产中修改的基类的属性,而无需退出 Visual Studio。 双击 C++ 类或属性的蓝图引用,在 Visual Studio 中打开 UE 资产检查器。
在远程 Linux 计算机上启用了运行中的 DevContainers。
在 CMake 目标视图中选择了要构建的多个目标。
添加了对 CMakePresets.json 版本 5 的支持。 有关新功能的信息,请参阅 CMake 文档。
启用了测试资源管理器以并行生成和测试多个 CMake 目标。
在开发容器中添加了“在终端中打开容器”选项。
实现了标准库功能:
P2508R1basic_format_string、format_string、wformat_string
P2322R6ranges::fold_left、ranges::fold_right 等。
P2321R2views::zip(不包括 zip_transform、adjacent 和 adjacent_transform)
Visual Studio 版本 17.4 中 C++ 的新增功能有关 Visual Studio 版本 17.4 中的新增功能和 bug 修复的摘要,请参阅 Visual Studio 2022 版本 17.4 发行说明和 Visual Studio 2022 17.4 中面向 C++ 开发人员推出的新增功能。改进了编译器错误消息,以提供更正确和有用的信息,尤其是对于概念。
添加了实验性 MSVC 选项 /experimental:log<directory>,将结构化 SARIF 诊断输出到指定目录。
向 IntelliSense 添加了对 C23 属性的支持,并在 C++20 模块支持中继续取得进展。
改进了打开新解决方案时的编制索引性能。 大型项目可以在 17.3 的基础上提高 20-35%。
改进了命名返回值优化 (NRVO):
NRVO 针对涉及异常处理或循环的情况启用。
如果用户传递 /Zc:nrvo 选项、/std:c++20 或更高版本或 /permissive-,则即使在 /Od 下也启用 NRVO。
现在可以使用 /Zc:nrvo- 选项禁用 NRVO。
已将 Visual Studio 随附的 LLVM 版本升级到 15.0.1。 有关可用功能的详细信息,请参阅 LLVM 和 Clang 发行说明。
已使用 CMake 项目为 Visual Studio 添加了对 vcpkg 项目的支持。 对于包含 vcpkg 清单的项目,会在项目打开时自动激活环境。 在 Visual Studio 博客文章中的 vcpkg 环境激活中了解有关此功能的详细信息。
现在,可以将开发容器用于 C++ 项目。 在 适用于 C++ 的开发容器博客文章中了解有关此功能的详细信息。
当预先包含标头中有一个为 PCH 时,IntelliSense 现在遵循预先包含标头的顺序。 以前,当通过 /Yu 使用 PCH 并通过 /FI 强制包含它时,IntelliSense 将始终先处理它,然后再处理通过 /FI 包含任何其他标头。 此行为与生成行为不匹配。 进行此更改后,/FI 标头将按照指定的顺序进行处理。
从测试资源管理器中的 CTest 名称中删除了内部前缀。
将 Visual Studio 随附的 CMake 版本升级到了版本 3.24.1。 有关可用功能的详细信息,请参阅 CMake 发行说明。
Android SDK 更新:
Ant 脚本已删除,因此用户不会再在“新建项目”对话框中看到基于 Ant 的模板。 有关从 Ant 模板迁移到 Gradle 模板的帮助,请参阅从 Apache Ant 迁移生成
添加了对使用 NDK 23 和 24 生成的支持
已将 NDK 组件更新到 LTS 版本 23
添加了 ranges::min_element()、ranges::max_element() 和 ranges::minmax_element() 的矢量化实现
我们将继续跟踪 C++ 标准化的最新发展。 可通过在编译器选项中包括 /std:c++latest 来提供对这些 C++23 功能的支持:
P2302R4ranges::contains, ranges::contains_subrange
P2499R0string_view 范围构造函数应为 explicit
P0849R8auto(x):语言中的衰减复制
(编译器部件尚未实现。最初实现范围支持时,库部件是在 C++20 模式下实现的。)
P0881R7<stacktrace>
P2301R1 添加 std::stacktrace 的 pmr 别名
P1328R1constexpr type_info::operator==()
P2440R1ranges::iota、ranges::shift_left、ranges::shift_right
P2441R2views::join_with
添加了“创建声明/定义后导航”选项,允许你选择“创建声明/定义”功能的导航行为。 可以在速览(默认)或打开文档或无导航之间进行选择。
Visual Studio 的 Arm64 版本现在绑定了 CMake 和 Ninja 的 Arm64 版本。
添加了对 CMake 预设版本 4 的支持。 有关可用功能的详细信息,请参阅 CMake 发行说明。
使用连接管理器的远程系统连接现在支持 SSH ProxyJump。 ProxyJump 用于通过另一个 SSH 主机访问 SSH 主机(例如,访问防火墙后面的主机)。
Visual Studio 版本 17.3 中 C++ 的新增功能有关 Visual Studio 版本 17.3 中的新增功能和 bug 修复的摘要,请参阅 Visual Studio 2022 版本 17.3 发行说明和 C++ 改进。Arm64EC 工具链不再标记为实验性,已可供生产使用。
Visual Studio 终端现在可作为 SSH 客户端与存储的 SSH 连接一起使用。 安装适用于 Linux 工具的 C++ 后,打开终端工具窗口。 终端下拉列表将填充存储的连接。 选择连接时,将在 Visual Studio 中打开一个新的终端窗口,其中显示远程系统上的伪终端。 控制字符、颜色和光标位置感知都受支持。
Visual Studio 现在可以为 UE 项目添加 Unreal Engine 类模板。 若要试用此功能,请确保 Visual Studio 安装程序中的“使用 C++ 的游戏开发”工作负载中选择了“针对 Unreal Engine 的 IDE 支持”。 处理 UE 项目时,右键单击项目或文件夹/筛选器,然后选择“添加”>“UE 类”。
现在,“转到定义”将记住以前的签名,并在没有更好的匹配项(例如,手动更改其中一对签名)时进行相应导航。
提高了“转到全部”的响应速度。 以前,结果要在停止键入后才会显示。 在新体验中,键入时就会显示结果。
在需要 enum 类型完成(例如 enum 变量、case 标签、返回 enum 类型等的赋值)的上下文中,自动完成列表现在仅筛选匹配的枚举器和相关构造。
为面向 .NET Core 的 C++/CLI MSBuild 项目添加了 NuGet PackageReference 支持。 进行此更改是为了解决混合代码库无法采用 .NET Core 的障碍。 此支持不适用于其他 C++ 项目类型或任何面向.NET Framework 的 C++ 项目类型。 目前没有计划将 PackageReference 支持扩展到其他 C++ 方案。 团队正在为非 MSBuild 方案开发涉及 vcpkg 的单独体验,并添加更强大的功能。
为嵌入式开发添加了串行监视器窗口,可通过“调试”>“Windows”>“串行监视器”找到。
与 17.2 相比,C++ 索引提高了约 66%。
将 Visual Studio 随附的 CMake 版本升级到了版本 3.23。 有关可用内容的详细信息,请参阅 CMake 3.23 发行说明。
将 Visual Studio 随附的 LLVM 工具版本升级到了 v14。 有关可用内容的详细信息,请参阅 LLVM 和 Clang 发行说明。
将并行 Dev 16.11 C++ 工具集更新到了版本 14.29.30145.00。 最新版本的 Dev 16.11 C++ 工具集包含重要的 bug 修复,包括修复所有剩余的 C++20 缺陷报告。 有关 bug 修复的详细信息(包括 Dev 16.11 中的 C++20 缺陷报告),请参阅 Visual Studio 2019 版本 16.11.14 发行说明。
我们对 C++ 模块的编辑器内体验进行了各种改进。 我们正在不断努力提高体验的质量,鼓励你试用 17.3。 通过开发者社区报告存在的问题。
Visual Studio 版本 17.2 中 C++ 的新增功能有关 Visual Studio 版本 17.2 中的新增功能和 bug 修复的摘要,请参阅 Visual Studio 2022 版本 17.1 发行说明。添加了对 C++23 功能 deducing this 的编译器支持(可在 /std:c++latest 选项下使用)。
添加了对 C++23 功能 deducing this 和 if consteval 的 IntelliSense 支持。
添加了内联参数名称和类型提示支持(通过按 Alt+F1 或双击 Ctrl 进行切换)。 可以在“工具”>“选项”>“文本编辑器”>“C/C++”>“IntelliSense”下自定义此行为。
在 CMake 项目中添加了对 C++20 模块的实验性支持。 此支持目前仅适用于 Visual Studio (MSBuild) 生成器。
在 17.1 中,我们为嵌入式开发人员引入了外围寄存器和 RTOS 视图。 我们会在 17.2 中提高可用性,从而继续改进这些视图的功能:
RTOS 工具窗口现在默认处于隐藏状态。 未使用 RTOS 时,它可以阻止显示带有不相关错误消息的工具窗口。
在工具窗口中双击 RTOS 对象时,它会为该对象添加监视。
在 RTOS 工具窗口中选择堆栈指针的开始值和结束值时,它会在内存窗口中打开。
我们已将设备目标的线程感知添加到调用堆栈窗口。
用户现在可以选择外围设备、寄存器或字段旁边的固定图标,将它们固定到外围设备视图的顶部。
我们添加了其余 C++20 缺陷报告(也称为“后移植”)的实现。 所有 C++20 功能现已在 /std:c++20 选项下提供。 有关实现的后移植的详细信息,请参阅 Microsoft/STL GitHub 存储库中的 C++20 缺陷报告项目以及 MSVC 的 STL 完成 /std:c++20 博客文章。
我们添加了各种 C++23 库功能,位于 /std:c++latest 选项下。 有关新功能的详细信息,请参阅 STL 存储库更改日志。
根据包含图的深度,将初始 C++ 索引的性能提高了 20%。
Visual Studio 版本 17.1 中 C++ 的新增功能有关 Visual Studio 版本 17.1 中的新增功能和 bug 修复的摘要,请参阅 Visual Studio 2022 版本 17.1 发行说明。添加了新的“配置预设”模板,以使用 CMakePresets.json 在远程 macOS 系统上配置和生成 CMake 项目。 此外,还可以在远程 macOS 系统上启动 CMake 目标,然后使用由 GDB 或 LLDB 提供支持的 Visual Studio 调试程序进行远程调试。
现在,可以使用 LLDB 或 GDB 在 Visual Studio 中调试远程 macOS 系统上的核心转储。
Visual Studio 附带的版本 Clang 和 LLVM 升级到 v13。
Visual Studio 的 CMake 集成仅当在开放工作区根目录中识别到 CMakeLists.txt 时激活。 如果在该工作区的其他级别识别到 CMakeLists.txt,则系统会通过发出一条通知来提示你激活 Visual Studio 的 CMake 集成。
可用于检查微控制器上的外围寄存器以及实时操作系统 (RTOS) 对象并与之交互的新视图(可通过依次选择“调试”>“Windows”>“嵌入式寄存器”找到这些视图)
为 RTOS 项目添加了一个新的线程视图,可通过“调试”>“窗口”>“RTOS 对象”访问该视图。 有关详细信息,请参阅 Visual Studio 中的嵌入式软件开发。
Visual Studio 版本 17.0 中 C++ 的新增功能有关 Visual Studio 中的新增功能和 bug 修复的摘要,请参阅 Visual Studio 2022 版本 17.0 发行说明。Visual Studio IDE devenv.exe 现在是本机 64 位应用程序。
MSVC 工具集现在默认为调试记录中的 SHA-256 源哈希。 以前,工具集默认使用 MD5 进行源哈希处理。
v143 生成工具现可通过 Visual Studio 安装程序使用,也可在独立的生成工具中使用。
本机 C++ 的热重载借助 C++ 的热重载,可对正在运行的应用进行多种类型的代码编辑,并且无需使用断点等暂停应用执行就可应用这些更改。
在 Visual Studio 2022 中,当你在调试器中启动应用程序时,可以使用“热重载”按钮在应用程序仍在运行时对其进行修改。 此体验由本机“编辑并继续”提供支持。 有关受支持编辑的详细信息,请参阅编辑并继续 (C++)。热重载支持 CMake 和 Open Folder 项目。
WSL2 支持现在无需建立 SSH 连接即可在 WSL2 上进行本机生成和调试。 跨平台的 CMake 项目和基于 MSBuild 的 Linux 项目均受支持。
经过改进的 CMake 支持我们将 Visual Studio 附带的 CMake 版本升级到了版本 3.21。 若要详细了解此版本提供的功能,请参阅 CMake 3.21 发行说明。
已更新 CMake 概述页面,现支持 CMakePresets.json。
现可使用 CMake 3.21 和 CMakePresets.json v3 配置和生成 CMake 项目。
Visual Studio 现在支持在 CMakePresets.json 中使用 buildPresets.targets 选项。 此选项使你能够在 CMake 项目中生成目标的子集。
CMake 项目中的“项目”菜单已经过简化,显示“删除缓存并重新配置”和“查看缓存”选项。
实施了 /scanDependencies 编译器选项以列出 CMake 项目的 C++20 模块依赖项,如 P1689R5 中所述。 这步举措旨在支持使用 CMake 生成基于模块的项目,我们正努力在更高版本中完成此支持。
标准库改进此处突出显示了选择标准库 (STL) 改进。 有关新功能、更改、bug 修复和性能改进的完整列表,请参阅 STL 团队的 Changelog。添加了调试可视化工具以改善以下类型的显示方式:source_location、bind_front()、u8string(及其迭代器)、default_sentinel_t、unreachable_sentinel_t、ranges::empty_view、ranges::single_view、ranges::iota_view(及其迭代器/sentinel)、ranges::ref_view、thread、thread::id、jthread 和 filesystem::path
在 <string> 中的 stoi() 系列函数和 <locale> 中的各种函数(如 collate 成员函数)、has_facet() 以及 isalnum() 和 tolower() 系列函数中添加了 [[nodiscard]]。
P0980R1 将 std::stringconstexpr 合并到 VS 2019 16.10。 现在支持 Clang。
P1004R2 将 std::vectorconstexpr 合并到 VS 2019 16.10。 现在支持 Clang。
突出显示了 C++23 功能P1048R1 添加了 is_scoped_enum,这是 C++ 标准库的一个新特性,可以检测某个类型是否为区分范围的枚举。
P1132R7out_ptr()、inout_ptr()
P1679R3contains() 适用于 basic_string 和 basic_string_view
P1682R3to_underlying() 适用于枚举
P2162R2 允许继承自 std::variant
P2166R1 禁止从 nullptr 构造 basic_string 和 basic_string_view。 这是一项源中断性变更。 以前在运行时具有未定义行为的代码现在会被拒绝并出现编译器错误。
P2186R2 已删除垃圾回收支持。 此更改将删除 declare_reachable、undeclare_reachable、declare_no_pointers、undeclare_no_pointers 和 get_pointer_safety。 以前,这些函数不起作用。
突出显示了性能改进<format> 现在可以检测到它何时写入到 basic_string 或 vector 的 back_insert_iterator 中,并在容器的 end() 处对 insert() 进行更快的调用。
将 vector<bool> 的 std::find() 和 std::count() 的性能提高了 19 倍和 26 倍(注意是倍数,不是百分数)。
提高了 vector<bool> 的 std::count() 的性能
std::byte 现在的性能与reverse() 和 variant::swap() 中 unsigned char 的性能相同
Clang 和 LLVM 支持Visual Studio 附带的 LLVM 工具已升级到 LLVM 12。 有关详细信息,请参阅 LLVM 发行说明。
Clang-cl 支持已更新到 LLVM 12。
现可使用 LLDB 从 Visual Studio 调试在远程系统上运行的进程。
C++ AMP 已弃用C++ AMP 标头现已弃用。 在 C++ 项目中添加 <amp.h> 会导致出现生成错误。 若要禁止提示错误,请定义 _SILENCE_AMP_DEPRECATION_WARNINGS。 有关详细信息,请参阅 AMP 弃用链接。
IntelliSense 改进改进了 C++ IntelliSense,为导入的模块和标头单元中的类型提供了导航和语法突出显示功能。 IntelliSense 是我们积极投入的一个方面。 请帮助我们改进:在开发者社区通过“帮助”>“发送反馈”来分享你的反馈 。
通过优化缓存标头使用情况和对符号数据库的访问,以及通过提升进入代码的访问速度,改进了 C++ IntelliSense 的性能。
IntelliSense Code Linter for C++ 现在默认为启用状态,提供对常见代码缺陷的即时建议和修复建议。
现在,在使用带有显示名称的预设时,可使用 C++ IntelliSense for CMake 项目。
C++ 工作负载更新代码分析改进代码分析现在强制检查用 _Check_return_ 或 _Must_inspect_result_ 批注的函数的返回值。
改进了代码分析工具中的空指针取消引用检测。
添加了对 gsl::not_null 的支持以进行代码分析。
支持 /fsanitize=fuzzer 编译器选项下的 Libfuzzer。
旧版本的发行说明还提供了 C++ 先前版本的发行说明。 有关 Visual Studio 2019 中 C++ 新增功能的信息,请参阅 Visual Studio 2019 中 C++ 的新增功能。有关 Visual Studio 2017 中 C++ 新增功能的信息,请参阅 Visual Studio 2017 中 C++ 的新增功能。有关更低版本中新增功能的信息,请参阅 Visual C++ 新增功能 (2003 - 2015)。已知问题C++ IntelliSenseWhen importing a C++20 module or header unit, IntelliSense may stop working or 'There are too many errors' error is shown。
若要详细了解 Visual Studio 2022 中关于 C++ 的其他待解决问题和可用解决方法,请参阅 C++ 开发者社区问题列表。反馈和建议欢迎咨询! 可使用安装程序或 Visual Studio IDE 右上角的“发送反馈”图标,或者通过“帮助”>“发送反馈”来报告问题或提出功能建议 。 可在 Visual Studio 开发者社区跟踪你的问题,也可在这里添加评论和查找解决方案。 此外,还可通过实时聊天支持获得免费安装帮助。博客充分利用 Microsoft 开发人员博客网站中提供的见解和建议,及时了解所有新版本。 这些博客包括对各种功能的深度探讨。 C++ 团队博客和 Visual Studio 博客尤其令人感兴趣。
为什么会选择vscode其实一直想用一下强大的vscode,最近正好想用C++刷题,于是想在vscode上配置一下C++的编译环境,用舒服的编辑器刷题应该会效率max也会坚持吧。但是其实网上写的博客看了很多都是小白看一篇就够了,但其实每篇都感觉写的很模糊,我综合了很多篇其实只是解决了最简单的问题,走了很多弯路,浪费了好多时间,感觉真的作为小白,遇到的问题其实都不会那么复杂。首先明确你的目的其实目的很简单,说白了就是vscode上可以跑C++的代码,能编译,能不报错,能运行就完事,更直观的可以理解为把你用的老旧DevC++替换为vscode的舒适手感。那么我们需要的东西也就很直白的拆分成这几部分一个一个处理就可以了。注意vscode只是一个代码编辑器,所以1.要使vscode可以编译C++代码:需要安装编译器2.要使vscode可以按照dev一键运行:需要在vscode里安装插件3.要使vscode可以和dev一样调试程序:需要添加两个json文件4.要使vscode可以编译头文件库不报错:添加.h文件库的位置其实就这么简单的四点,很多写的非常复杂其实就是解决最简单的问题,个人很反感效率低下的炫技方式,浪费自己时间也浪费别人时间。开始具体解决第一步解决编译器问题首先官网安装vscode大家都会,注意一点就是安装任务那里最好全选,之后选择一个编译器下载,这里其实有MinGW、MinGW-w64 与TDM-GCC,第一个目前不怎么用,建议用第二个和第三个,我选择的是第三个,因为其实会有很多人有网盘分享,而MinGW-64离线下载很慢。下载好编译器之后把bin文件的路径添加的系统变量的PATH中配置好之后 win+r,输入cmd,输入gcc -v,出现下图证明成功。第一步编译器选择好,通关!第二步vscode安装插件现在你下载了vscode,可以理解为它是空的,你想用什么功能就去下载,苹果用户理解为app store,安卓用户理解为应用商店,你下qq怎么下vscode就怎么下。第五个,输入你想下的插件,这里要安装C/C++,Code Runner就可以类似dev里的一键运行,下载完记得重新启动一下。文件>首选项>设置>用户>拓展>Run Code Configuration找到Run In Terminal,就可以在运行时不出现黑色的框。第二步插件已经装好,通关!第三步调试程序,配置两个json文件注意:在电脑上你习惯的位置新建一个文件夹,用于存放编写的代码,接下来配置好的调试环境,仅会对存放在这一个文件夹以及文件夹的子目录里程序生效!如上是我在电脑里创建的一个用于存放以后的cpp文件的文件夹。之后在文件夹下新建.vscode文件夹并新建两个json文件分别叫做launch.json和tasks.json复制下面的代码launch.json需要修改一处:"configurations"中"miDebuggerPath"选项需要设置为你的调试程序gdb.exe所在位置的绝对路径,无论安装的是mingw还是mingw-w64,都会有一个gdb.exe在安装目录的bin文件夹下,一定要把对应的路径修正否则无法调试如我的电脑上{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "E:/TDM_GCC/TDM-GCC-64/TDM-GCC-64/bin/gdb64.exe",
"preLaunchTask": "compile",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
},
]
}tasks.json如果需要是c语言也就是gcc将下面的command项由g++改为gcc{
"version": "2.0.0",
"tasks": [{
"label": "compile",
"command": "g++",
"args":[
"-g" ,"${fileBasename}",
"-fexec-charset=GBK", //Console窗体输出字符编码 保证能正常显示中文
"-finput-charset=UTF-8",
"-std=c++17",
"-static-libgcc",
"-fexec-charset=GBK"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}第三步配置调试文件,通关!第四步头文件怎么办现在我们已经配置好我们的 vscode的一大半了,但是,当打代码的时候会发现这是什么意思,不会配置了半天vscode只是一个空壳子吧,库函数都没有,其实这个问题也是牵绊我时间最长的问题,很多博客其实都没有写的很清楚,但其实这里却是很多人遇到的问题。首先解答一下为什么,vscode找不到头文件的问题是由于windows下vscode默认的编译器是微软的MSVC(vs使用的编译器)的头文件路径,如果你没有安装vs肯定会因为找不到头文件而报错。所以我们要手动修改配置。ctrl + shift + p , “C/Cpp: Edit configurations” ,生成c_cpp_properties.json 文件在这个文件里需要修改几处,如下图修改includepath和compiler path还有其他想添加的库,都可以用这样的方式进行添加,vscode非常灵活,轻量化的设计让人很是满足!上面的配置完成之后,再回到你创建的.cpp文件,你会发现不会报错了,有没有一种拼积木就差最后一块的感觉。ok,第四步头文件的配置,通关!问题,如果遇到,可以设置为自动保存,别手动保存,容易忘记其实真的使非常简单的过程,把自己的经验分享给各位。enjoy your coding time!

我要回帖

更多关于 visual studio c 的文章

 

随机推荐