清理遗留代码“header spaghetti”

2024-01-14

任何清理“标题意大利面”的推荐做法,这会导致极其严重的后果 编译时间慢(Linux/Unix)?

GCC 中是否有相当于“#pragma Once”的东西?
(发现与此相关的冲突消息)

Thanks.


假设您熟悉“包含防护”(#ifdef 在标头开头......),加快构建时间的另一种方法是使用外部包含防护。 它在“大规模C++软件设计 http://vig.pearsoned.com/store/product/1,1207,store-15080_isbn-0201633620,00.html“。这个想法是,经典的包含防护与#pragma一次不同,不会让你从第二次开始就忽略头文件所需的预处理器解析(即它仍然需要解析并查找包含防护的开始和结束) . 使用外部包含防护,您可以将#ifdef 放置在#include 行本身周围。

所以它看起来像这样:

#ifndef MY_HEADER
#include "myheader.h"
#endif

当然,在 H 文件中你有经典的包含保护

#ifndef MY_HEADER
#define MY_HEADER

// content of header

#endif

这样,预处理器甚至不会打开/解析 myheader.h 文件,并且它可以在大型项目中为您节省大量时间,特别是当头文件位于共享远程位置时(有时会这样做)。

再说一次,这一切都在那本书里。哈

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

清理遗留代码“header spaghetti” 的相关文章

随机推荐

  • 在同一图中绘制不同颜色的波[重复]

    这个问题在这里已经有答案了 如何在 matlab 中绘制具有不同颜色的波 由 1 x N 矩阵表示 可以手动提供特定颜色的范围 有关预期输出 请参见下图 这是一个简单的选项 x linspace 4 pi 4 pi 10000 some d
  • 连接两个邻接矩阵并保留值

    下列的这个问题 https stackoverflow com questions 46295687 r how to make 2 adjacency matrices compatible to eachother 是否可以连接两个邻接
  • Python 2.7,PIP:“构建轮子失败......”

    第一次使用pip 尝试使用python docs samples 教程库 https github com GoogleCloudPlatform python docs samples 当我运行 python m pip install
  • UIView-Encapsulated-Layout 与 UIViewController 中的 UICollectionView 嵌入视图中

    由于某种原因 在嵌入的视图控制器内使用集合视图会在集合视图约束上引发 UIView Encapsulated Layout 我无法设置高度或顶部 底部边距 关于为什么会发生这种情况有什么想法吗 我一直在通过故事板添加约束 我什至尝试以编程方
  • 如何在 div 中间对齐旋转文本

    我想将旋转文本垂直对齐在 100 高度 div 的中间 如下图所示 因此 每当屏幕尺寸发生变化时 文本都会保留在 div 的中间 有人有解决方案吗 http jsfiddle net SVkPU 1 http jsfiddle net SV
  • 检查 Excel 中的组合?

    我有两道多项选择题 有 9 种可能的选择 总共有 20 种答案组合 每个组合都被分配一个值 在 Excel 中 我需要检查不同组合的答案并告诉我该组合的值 这怎么可能 我需要使用什么公式 问答示例 可能的答案 这是我尝试过的方法 它有效 但
  • 如何加快file_get_contents的速度?

    这是我的代码 language GET soundtype word GET sound word urlencode word if language english url
  • 使用 Ransack gem 进行复选框搜索

    我需要过滤表中的数据 为此 我发现元搜索 https github com ernie meta search宝石 我安装了 meta search 并收到此错误 uninitialized constantActiveRecord Ass
  • PHP - SimpleXML - AddChild 与另一个 SimpleXMLElement

    我正在尝试构建一个相当复杂的 XML 文档 我的 XML 文档中有很多重复的部分 我想我应该使用多个字符串模板作为这些部分的基础文档 并使用 simplexml load string 创建 XML 元素的实例 所以我有一个 SimpleX
  • 带有 @nguniversal 的 Angular SSR 和用于 PostCSS 支持的自定义 webpack

    我的 Angular 10 2 1 应用程序使用自定义 webpack 构建器在 scss 文件中提供 PostCSS 支持 在 SPA 模式下工作得非常好 角度 json build builder angular builders cu
  • Equals() 与静态 string.Equals()

    在阅读 C 中的字符串比较时 我发现了很多方法来比较 2 个字符串以查看它们是否相等 我已经习惯了 来自 C 但我了解到 如果将对象与字符串进行比较 那么 默认为参考值 或类似的值 那么对于Equals 方法可以说我有 2 个字符串 str
  • 尝试让 Spring/Consul/Vault 协同工作

    我正在尝试做一些我认为简单的事情 我想用Consul https www consul io用于配置 以及Vault https www vaultproject io为了秘密 我正在寻找一个像这样的简单应用程序 它允许我从 Consul
  • 在 Mac 上哪里可以找到 bashrc 文件?

    你好我正在关注这个page http docs python guide org en latest starting install osx 我正在我的 mac 上安装 Python 以便我可以设置Django Eclipse开发环境 但
  • 覆盖 google.com 匿名函数的一部分

    如果一个 javascript 函数是匿名声明的 有什么方法可以覆盖它或它的一部分吗 我试图阻止 google com 的即时搜索劫持向上和向下箭头键以在您的搜索排名中移动 我已经确定了我认为有问题的代码部分 键码 38 和 40 用于向下
  • 如何自定义魅力报告标题和徽标

    下面附上通过 allure 生成的 allure 报告图像 想要使用我自己的标题和徽标而不是 ALLURE REPORT 和默认徽标来自定义报告标题和徽标 图像突出显示为黄色 感谢你的帮助 要更改徽标 您应该将自定义徽标插件放入插件文件夹中
  • 如何正确删除和重新添加实体数据模型

    这里是实体框架的新手 使用VS 2010和SQL Server 2008 Express DB 添加新表后 我在刷新实体数据模型时遇到问题 因此 我遵循了在这里找到的建议 删除并重新生成模型 我进入实体数据模型向导的 选择您的数据连接 部分
  • 根据格式为 %d/%m/%Y 的日期按时间顺序排序数据帧

    我有一些数据必须格式化为 d m Y 数据不按时间顺序排列 因为它是按第一个数字 日而不是月份 排序的 我希望我能指定order or reorder我希望排序以不同的方式进行 我只是不知道该怎么做 以下是一些要订购的日期数据 date 1
  • 相当于 Struts 1.x“bean:define”标签?

    我正在致力于将旧的 Struts 1 x 应用程序转换为 Spring MVC 并且在一些 JSP 页面中 bean define标签用于从资源包中获取字符串 然后在页面中稍后使用
  • 如何查找 Active Directory OAuth 身份验证的受众字段? (如何从 Azure 逻辑应用程序向 DevOps 发送发布请求?)

    请帮我解决这个问题 我正在尝试从 Azure 逻辑应用程序向 DevOps 发送发布请求以创建发布 我在逻辑应用程序中创建了一个 http 操作 这是用于创建发布的 uri https vsrm dev azure com https vs
  • 清理遗留代码“header spaghetti”

    任何清理 标题意大利面 的推荐做法 这会导致极其严重的后果 编译时间慢 Linux Unix GCC 中是否有相当于 pragma Once 的东西 发现与此相关的冲突消息 Thanks 假设您熟悉 包含防护 ifdef 在标头开头 加快构