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