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)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。

我想:你值得拥有。

相关推荐
爱笑的源码基地9 小时前
智慧城管源码,java版城管综合执法监督系统微服务源码
java·源码·软件开发·智慧城管·城管执法系统·数字城管·城管综合管理系统
油炸自行车11 小时前
【Qt】Window环境下搭建Qt6、MSVC2022开发环境(无需提前安装Visual Studio)
qt·visual studio·qt6·msvc2022·qt creator 17.0
doll ~CJ2 天前
基于QVTKOpenGLNativeWidget的三维点云可视化实现
c++·qt·软件开发·三维点云可视化
字符搬运工-蓝天2 天前
Win7环境中离线安装Visual Studio 2017的相关问题
ide·windows·visual studio
yuanpan2 天前
Visual Studio 2026下载地址及新特性介绍
ide·visual studio
晨非辰2 天前
#C语言——刷题攻略:牛客编程入门训练(十):攻克 循环控制(二),轻松拿捏!
c语言·开发语言·经验分享·学习·visual studio
平平无奇。。。2 天前
解密完全二叉树顺序存储之堆结构
c语言·数据结构·visual studio
晨非辰2 天前
#C语言——刷题攻略:牛客编程入门训练(十二):攻克 循环控制(四)、循环输出图形(一),轻松拿捏!
c语言·开发语言·经验分享·笔记·其他·学习方法·visual studio
MeteorSeed3 天前
【译】Visual Studio 八月更新已发布 —— 更智能的人工智能、更出色的调试功能以及更多控制权
visual studio
许怀楠3 天前
【主页介绍】
linux·c++·贪心算法·visual studio