Visual Studio 对 C++ 头文件和模块的支持

在 C++ 编程领域,头文件和模块的管理有时候确实比较令人头疼。但是,有许多工具和功能可以简化此过程,提高效率并减少出错的可能性。下面是我们为 C++ 头文件和模块提供的几种工具的介绍。

构建明细

通过菜单栏 Build > Run Build Insights,可以打开构建明细窗口。

>> 请移步至 www.topomel.com 以查看图片 <<

此工具提供对"包含文件"和"包含树"视图的见解,以分析和优化 #include 使用情况。

例如,在 bullet3 示例存储库中,运行 Build Insights 显示当前项目的总生成时间为 202.812 秒。

>> 请移步至 www.topomel.com 以查看图片 <<

启用 #include 清理

接下来,启用 #include 清理功能("工具">"选项">"文本编辑器">"C/C++ > 代码清理">"启用 #include 清理")。

此功能有助于删除未使用的 #include 指令并添加可传递使用的头文件。

您还可以调整建议级别的严重性,以适合您的编码风格和要求。

>> 请移步至 www.topomel.com 以查看图片 <<

配置 #include 清理

您还可以使用 EditorConfig 自定义 #include 清理生成建议的方式。

您可以使用使用 .editorconfig 配置包含清理中的设置排除特定包含、指定依赖项、重新映射头文件和指定备选项。

使用 #include 清理

可以使用此功能执行下列三项任务:

> 添加可传递使用的头文件:添加间接使用的包括单独或一次性全部使用。

> 删除未使用的头文件:单独或一次性删除未使用的包含。

> 优化此文件的包含图:添加所有传递使用的 include,并删除未使用的 include,以获得优化的 include 结构。

让我们将其应用于示例存储库中的 "test_invdyn_jacobian.cpp" 文件。选择 "优化包含test_invdyn_jacobian.cpp图"

>> 请移步至 www.topomel.com 以查看图片 <<

检查构建时间优化结果

清理 "test_invdyn_jacobian.cpp" 文件后,再次运行 Build Insights,以量化清理工作的好处。

在我们的示例存储库中,总体构建时间提高到 197.76 秒。

#include 清理功能不会一次清理整个项目。但是您可以使用它来逐步改进您的项目。专注于构建时间最长的文件,您可以使用 Build Insights 找到这些文件。

清理的文件越多,项目的构建速度就越快。

>> 请移步至 www.topomel.com 以查看图片 <<

启用 #include 诊断

#include 诊断功能允许您直接在编辑器中查看头文件的使用情况和构建时间。

打开 #include 诊断

右键单击编辑器以打开上下文菜单,导航到 "#include 指令" 选项,然后选择 "打开 #include 诊断程序",以打开 #include 诊断程序。这将在每个头文件上方显示 CodeLens,提供有关其使用情况和生成时间的信息。

在评估每个头文件的生成时间和使用情况后,您可以使用 #include 清理功能来优化头文件。

此操作可以显著缩短项目的整体生成时间。这背后的原因是,这些头文件中任何未使用的 include 指令都可能导致图在使用头文件的任何地方进行不必要的扩展。

通过删除这些,您可以有效地提高构建过程的效率。

>> 请移步至 www.topomel.com 以查看图片 <<

使用 C++20 模块

除了上述功能外,C++20 还引入了头文件单元和命名模块。

头文件单元

头文件单元充当传统头文件包含和命名模块之间的桥梁。

它们允许您将头文件作为模块导入,为传统 #include 提供了更快、更强大的替代方案。

重要的是,它们不需要对头文件进行任何更改,但需要对生成系统进行重大修改。

命名模块

命名模块提供卓越的性能和对导出内容的控制。

它们需要创建 .ixx 文件并添加导出关键字。

导入的顺序并不重要,因为它们的顺序独立性和宏观独立性。

总结

Visual Studio 持续的给广大 C++ 开发者整出 "新花样",目的就是让你的生产力不断的提升,将宝贵的时间花在最值得的地方,点赞!

这里提到的 C++20 的模块,在 拓扑梅尔智慧办公平台 (TopomelBox) 并没有引入,一是担心这项特性实现的并不成熟,而是万一以后发生大的非兼容性变化,我这个小工程改起来,不得掉一层皮?

所以,还是老老实实使用头文件包含先把。

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。

本文来自:《Visual Studio features for C++ Header Files and Modules》

最近我写了个东西

正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。

我想:你值得拥有。

相关推荐
guanpinkeji2 天前
二手手机回收小程序,一键便捷高效回收
微信小程序·小程序·软件开发·手机回收小程序·二手手机回收
熬夜学编程的小王2 天前
【C++篇】深入剖析C++ Vector底层源码及实现机制
开发语言·c++·vscode·vector·visual studio
lucky.帅2 天前
基于BindingList的WinForm数据绑定机制与DataGridView动态刷新技术
开发语言·windows·c#·asp.net·.net·visual studio
guanpinkeji2 天前
AI数字人视频小程序:引领未来互动新潮流
人工智能·ai·小程序·软件开发·小程序开发·ai数字人小程序
三天不学习3 天前
AutoUpdater.NET 实现 dotNET应用自动更新
visual studio·autoupdater.net
x-cmd3 天前
[241119] .NET 9.0.0 正式发布 | D2 Emerge 收购 CodeProject,拓展软件开发社区影响力
安全·微软·.net·软件开发·dotnet·社区中心·codeproject
Kazefuku3 天前
VB.Net笔记-更新ing
笔记·.net·visual studio
深耕AI3 天前
【Visual Studio系列教程】如何在 VS 上编程?
ide·编辑器·visual studio
guanpinkeji3 天前
剧本杀门店预约小程序,解锁沉浸式推理体验
大数据·小程序·团队开发·软件开发·预约小程序·剧本杀门店预约系统
Ma_Hong_Kai4 天前
github和Visual Studio
github·visual studio