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

我想:你值得拥有。

相关推荐
酷酷学!!!2 小时前
C++第一弹 -- C++基础语法上(命名空间 输入输出 缺省参数 函数重载 引用)
开发语言·c++·学习方法·visual studio
咩图18 小时前
visual studio远程调试
ide·visual studio
落花逐流水21 小时前
Visual Studio 中的键盘快捷方式
ide·计算机外设·visual studio
这是我581 天前
C语言牢大坠机
c语言·其他·开源·动画·visual studio·牢大坠机
hlyling1 天前
优化视频编辑体验:精准高效视频分割,降低误差率,显著提升处理精度与效率
macos·eclipse·vim·phpstorm·visual studio
源码宝2 天前
Java语言+后端+前端Vue,ElementUI 数字化产科管理平台 产科电子病历系统源码
java·程序员·源码·软件开发·产科电子病历系统源码·医院产科信息管理系统源码·数字化产科管理平台源码
Eiceblue2 天前
C# 验证PDF数字签名的有效性
pdf·c#·asp.net·.netcore·visual studio
东方猫2 天前
向日葵、Todesk、teamviewer等工具远程连接电脑时Visual Studio黑屏或白屏或不显示解决方案
ide·visual studio·teamviewer
源码宝2 天前
基于B/S架构+java语言+ 开发工具Idea,vscode医院产科信息管理系统源码 如何标准化对接技术及各个模块
java·程序员·源码·软件开发·产科电子病历系统源码·医院产科信息管理系统源码·数字化产科管理平台源码
a_ran2 天前
关于 Mac 系统 .DS_store 文件的起源
macos·软件开发·finder