#pragma once 与 #ifndef #define #endif各自的优缺点

2023-11-03

为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。

方式一:

  1. 代码形式
//注意标识名是自己起的,但这两个必须相同,一般用头文件名的大写
#ifndef __A_H__    //如果未定义__A_H__,执行以下内容
#define __A_H__    //定义__A_H__
... ... // 声明、定义语句
#endif             //结束执行
  1. 优点
    #ifndef的方式受C/C++语言标准支持,兼容性好。它不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件(或者代码片段)不会被不小心同时包含。
  2. 缺点
    需要自己想一个标识名,可能会重复;编译器每次都需要打开头文件才能判定是否有重复定义,因此在编译大型项目时,ifndef会使得编译时间相对较长编译时间长。

方式二:

  1. 代码形式
#pragma once
... ... // 声明、定义语句
  1. 优点
    不必再费劲想个宏名了;大型项目的编译速度也因此提高了一些。
  2. 缺点
    同一个文件不会被包含多次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。你无法对一个头文件中的一段代码作pragma once声明,而只能针对文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

#pragma once 与 #ifndef #define #endif各自的优缺点 的相关文章

随机推荐

  • python 怎么画损失函数和迭代次数的关系_[python]自己绘制训练过程中的损失函数曲线...

    跟踪并保存训练过程中的损失函数 以CornerNet为例 他的源码并没有使用损失函数可视化的功能 有时候需要查看损失函数的变化趋势来确定超参 那么此时就需要手动去记录并储存损失函数值 在train py中 关于损失函数的部分如下所示 wit
  • Latex输入特殊字符#$%&{}_^-<>

    本博文源于latex基础学习 今天学习特殊字符的输入 H e l l o W o r
  • hdu 1698 Just a Hook(线段树区间修改)

    include
  • 支付宝大力补贴刷脸支付新赛道新机会

    此次微信和支付宝面向市场推出的刷脸支付的产品 在安全上做了极大的努力 通过数据层层加密 保障了商户的资金安全 同时也为消费者带来了全新的消费体验 减少了商户在高峰期人流量分流的问题 与传统的聚合二维码收银台形成了优势互补的作用 通过微信和支
  • Semantic-Kitti数据解析

    1 bin文件 文件中保存的是二进制格式的四维雷达数据 包括x y z intensity 打开文件 def load data points points path cloud np fromfile points path dtype
  • 初等数论之算术基本定理

    定理 每个大于1的正整数n都可以被唯一地表示成素数的乘积 n的分解式n p1 a1 p2 a2 p3 a3 pk ak 其中p1 p2 pk是素数 p1 lt p2 lt p3 pk 性质如下 1 d n a1 1 a2 1 a3 1 ak
  • Scala基础

    需要运行 使用object类 跟Java不太一样 Scala中class文件只是新建一个类 不能直接运行 Scala中 object 是单例对象 即 其中所有内容都是静态对象 不需要实例化 可以直接调用 main方法也是程序入口 跟Java
  • Visual Studio Code关联MATLAB的.m文件并进行编辑提示

    如何在Visual Studio Code软件中关联MATLAB的 m文件并进行编辑提示 1 设置 1 在VSCode中下载MATLAB扩展并安装 2 在文件 首选项 用户设置中 增加下列代码 将设置放入此文件中以覆盖默认设置 editor
  • 败者树(多路归并)

    已知顺串 R1 10 15 16 R2 9 20 38 R3 20 20 30 R4 6 15 25 R5 8 15 20 R6 9 11 16 R7 90 100 110 R8 17 18 20 建立败者树 编程工具 Dev C 读入文件
  • Qt部件基类QDialog

    部件基类QDialog QDialog是各种对话框的基类 其继承自QWidget 对话框有两种表现形式 模态对话框 非模态对话框 模态对话框就是阻塞同一应用程序中其它可视窗口的输入的对话框 用户必须完成当前对话框中的交互操作并且关闭窗口后才
  • ICCV图像处理相关论文总结(103篇)(粗)

    ICCV图像处理相关论文总结 103篇 1 Person ReID 行人再识别 15 1 Neural Person Search Machines Hao Liu Jiashi Feng Zequn Jie Karlekar Jayash
  • js addEventListener绑定事件方法(详细介绍)

    addEventListener是一种给元素绑定事件的方法 例如绑定点击事件 这样元素在被点击之后就会执行一些操作 let element document getElementById element element addEventLi
  • ping命令

    打开运行窗口 首先 我们需要打开运行窗口 可以通过按下Win R组合键打开 然后 在窗口中输入cmd 进入dos命令 在命令行中输入ping命令 在dos命令行中 我们可以通过输入ping命令来检测网络连接 例如 我们可以输入ping 19
  • latex使用——调整大小系列

    写在最前面 如果是双栏的论文 想让表格或者图片或者公式占满两栏 直接在 begin table 和 end table 里加 像这样 begin table 和 end table 其他的也是一样的操作 公式调整大小 字体大小 七号 5 2
  • git commit时加上Signed-off-by信息

    git commit s m descriptions about the code 只要加入 s参数即可自动加上Signed off by信息 转载于 https www cnblogs com dakewei p 9856990 htm
  • Unity之FBX文件操作学习笔记(一)

    FBX作为隶属于Autodesk的一种三维模型场景动画打包格式文件 在图形学工程化领域应用十分广泛 然而 FBX文件格式不是公开的 所以对FBX文件进行读取与存储需要专门的工具 除了游戏引擎以及三维软件自带的FBX文件操作工具外 Autod
  • 紫鸟和Maskfog浏览器全方位测评对比

    随着跨境电商行业的发展 指纹浏览器被越来越多的人广泛使用 对于跨境电商来说 指纹浏览器能为多账号安全管理提供解决方案 现在市面上的指纹浏览器也层出不穷 今天给大家测评一下我认为做得比较好的两款防关联浏览器 Maskfog浏览器跟紫鸟浏览器
  • 安卓java修改按钮大小_修改android Toolbar的标题大小和按钮图标颜色

    使用android toolbar的时候 toolbar中的标题 二级标题以及按钮的图标的颜色都会使用默认的值 但是 有时候我们必须要自定义它们的大小以及颜色 该如何自定义呢 解决方法 1 修改标题 二级标题的字体大小和颜色 可以通过sty
  • Http响应码分类汇总

    1 响应码分类 1xx 响应码规范 RFC6585 2012 4 RFC7231 2014 6 1xx 类状态码属于提示信息 是协议处理中的一种中间状态 请求已接收到 需要进一步处理才能完成 实际用到的比较少 HTTP1 0 不支持 hea
  • #pragma once 与 #ifndef #define #endif各自的优缺点

    为了避免同一个文件被include多次 C C 中有两种方式 一种是 ifndef方式 一种是 pragma once方式 方式一 代码形式 注意标识名是自己起的 但这两个必须相同 一般用头文件名的大写 ifndef A H 如果未定义 A