为什么要包括警卫?

2023-11-23

包括定义的警卫here,用于防止在编译时两次加载相同的代码。

为什么我的编译器 (GCC) 无法检测到它正在加载相同的代码两次并具有合理的默认行为?


仅仅是因为您可能希望编译器加载该文件两次。

请记住,那个#include只需加载一个文件并将其内容放在指令的位置即可。该文件可能是头文件,但也可能是有用且经常使用的源代码。

大多数现代编译器都会做出反应#pragma once完全按照您的意愿行事。但请记住,这是一个未包含在语言规范中的编译器扩展,并且坚持包含防护通常是一个好主意 - 您可以确定它适用于每个编译器和任何情况。

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

为什么要包括警卫? 的相关文章

  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • Mono 无法保存用户设置

    我在 Mono Ubuntu 上保存用户设置时遇到问题 这是代码示例 private void Form1 Load object sender EventArgs e string savedText Properties Setting
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 如果.Net Core可以在Windows上运行,为什么不能在.Net Framework中引用.Net Core DLL?

    我明白为什么 Net Framework 可能会在 Net Core IE 中导致问题 因为不存在特定于 Windows 平台的 API 但是为什么不能直接引用 Net Core 作为 Net Framework 中的库呢 如果 Net C
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • Silverlight Datagrid:在对列进行排序时突出显示整个列

    我的 Silverlight 应用程序中有一个 DataGrid 我想在对该列进行排序时突出显示整个列 它在概念上与上一个问题类似 Silverlight DataGrid 突出显示整列 https stackoverflow com qu
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因

随机推荐

  • 涉及具有易失性变量的表达式的简单语句的正确行为?

    考虑以下陈述 volatile int a 7 a statement A volatile int b a b statement B volatile int c a c statement C 现在 我一直试图在标准中找到一个点 告诉
  • JAXB 在全局范围内将空字符串编组为 Null

    我的问题非常类似于当字符串为空但不为空时 如何防止在 JAXB 中编组空标签 不同之处在于 我无法将注释添加到 package info java 因为我们所有的 JAXB 类型都是从每次构建的模式生成的 如果可能的话 我也更愿意不更改 J
  • 如何在 Node 中逐行读取 stdin

    我正在寻找使用命令行调用来处理带有节点的文本文件 例如 node app js lt input txt 文件的每一行都需要单独处理 但处理后输入行可能会被忘记 使用标准输入的数据监听器 我将输入流按字节大小分块 因此我进行了设置 proc
  • 如何将焦点添加到 WPF 中的可编辑组合框

    我在 wpf 中使用可编辑的组合框 但是当我尝试从 C 代码设置焦点时 它只显示选择 但我想选择编辑选项 光标应显示以供用户输入 你可以试试这个代码 var textBox comboBox Template FindName PART E
  • Django + MySQL - 管理站点 - 添加用户 - 操作错误 - 保存点不存在

    我们试图拥有一个自定义的用户模型和行为 但后来我们注意到 即使是默认 Django 安装通过 Django 管理员添加新用户时出现问题 即使在其他 Django 版本中也会出现此问题 在 Django 中尝试过 1 8 以及最新的 Djan
  • 使用“SELECT”调用函数

    我偶尔会遇到这样的例子SELECT INTO FROM DUAL用于调用函数 例如 SELECT some function INTO a variable FROM DUAL 使用 而不是 a variable some function
  • 访问自动属性 ​​- C#

    自动属性被添加到 net 3 中的语言中 无论如何 使用以下代码创建一个 私有 字段 public string foo get set 是否有可能真正获得对此私有字段的任何形式的引用 我想做类似的事情 public string foo
  • 为什么 Rust 链接器在增量构建时没有更快?

    我是 Rust 的新手 我试图理解为什么 Rust 不能更快地构建 我特别讨论的是最常见的情况 其中我对一个源文件做了一个小更改 然后我需要等待几秒钟cargo build做它的工作 即使我的应用程序代码非常小 如果我添加对 MySQL 和
  • TreeMap 按值排序

    我想编写一个比较器 它可以让我按值而不是默认的自然顺序对 TreeMap 进行排序 我尝试了这样的事情 但无法找出出了什么问题 import java util class treeMap public static void main S
  • 如何使用Powershell或其他工具(递归)获取所有AD用户组?

    我试图在我使用的 Powershell 中获取用户所属的所有组 甚至是嵌套的组 重复地 Get ADUser
  • x86 操作码是任意的吗?

    x86 操作码是任意的吗 有没有理由hlt是 0xf4 并且nop是0x90吗 该架构的早期版本 8008 8080 是使用极少量的晶体管 逻辑门来实现的 当时 我确信设计者以易于解码的方式选择了操作码和指令格式 例如 最少的门数 这些说明
  • 如何在hadoop中执行MapReduce作业期间在控制台上打印

    我想在控制台上执行后打印 地图 的每一步 就像是 System out println 第一步完成 System out println 第二步完成 等等 是否有一个特殊的命令可以做到这一点 或者根本不可能 因为 System out pr
  • Flutter - 删除 dart 中的转义序列

    要将 API 响应字符串解码为 JSON json decode 工作正常 这将解析类似于以下内容的 JSON 字符串 Response Responsecode 1 Response Success 但就我而言 响应采用序列化形式 例如
  • SQL语法多重连接?

    我有两个表 Transaction 和 Master 事务表显示了起始和结束活动 ID 主控显示活动 ID 和名称 from 和 to id 使用相同的主表来关联活动 id 和名称 我想做的是采用不同的 from 和 to 值并用关联的名称
  • 从谷歌地图中删除 HeatmapLayer

    我正在使用 HeatmapLayer apihttps developers google com maps documentation javascript layers JSHeatMaps 我像这样生成热图 heatmap new g
  • 在C#中使用FtpWebRequest时设置端口号

    当我尝试使用 VS2008 作为调试器从 C 代码 FTP 到我的 Win 2008 服务器时 我不断收到异常 我的测试类如下所示 public class FTP private string ftpServerIP 192 168 10
  • 比较 BigDecimal

    我有以下两个 BigDecimal 对象 BigDecimal one new BigDecimal 3 0 BigDecimal two new BigDecimal 3 00 System out println one scale 0
  • 三角测量和直接线性变换

    按照 Hartley Zisserman 的多视图几何算法 12 最佳三角测量方法 p318 我得到了相应的图像点 xhat1 和 xhat2 步骤 10 在步骤11中 需要计算3D点Xhat 其中一种方法是直接线性变换 DLT 在 12
  • 如何从Java中的日期获取世纪

    如何从Java中的日期获取当前世纪 例如日期 06 03 2011 根据格式 MM dd yyyy 我怎样才能从这个日期使用当前世纪SimpleDateFormat 哈利 莱姆发布的内容略有变化 他的逻辑并不完全正确 1901 年是 20
  • 为什么要包括警卫?

    包括定义的警卫here 用于防止在编译时两次加载相同的代码 为什么我的编译器 GCC 无法检测到它正在加载相同的代码两次并具有合理的默认行为 仅仅是因为您可能希望编译器加载该文件两次 请记住 那个 include只需加载一个文件并将其内容放