C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别

发布时间 - 2026-01-11 00:45:16    点击率:

C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别

pragma once 之前一直用的很好,今天和同事的配合中发现自己没有真正理解pragma once。

原因:同事喜欢把公共的头文件通过生成后事件复制到一个公共的include文件夹中。

摘抄:

#ifndef方式:   
#ifndef __SOMEFILE_H__   
#define __SOMEFILE_H__  1   ... ... // 一些声明语句   
#endif  

  #ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点就是如果不同头文件的宏名不小心“撞车”,可能就会导致头文件明明存在,编译器却硬说找不到声明的状况

#pragma方式 

 
#pragma once   ... ... // 一些声明语句  

#pragma once 是个预处理指令,在头文件的最开始加入这条指令表示:这个头文件只被编译一次     #pragma once则由编译器提供保证:同一个文件不会被包含多次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。带来的好处 是,你不必再费劲想个宏名了,当然也就不会出现宏名碰撞引发的奇怪问题。对应的缺点就是如果某个头文件有多份拷贝,本方法不能保证他们不被重复包含。当 然,相比宏名碰撞引发的“找不到声明”的问题,重复包含更容易被发现并修正。

总结: 1. #ifndef 由语言支持所以移植性好,#pragma 可以避免名字冲突

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# C++  # 中pragma  # once  #   # #ifndef  # _XXX_H_  # 区别  # pragma  # #define  # C语言编程技巧 关于const和#define的区别心得  # c++ 尽量不要使用#define 而是用const、enum、inline替换。  # c++ const引用与非const引用介绍  # C++中的类型转换static_cast、dynamic_cast、const_cast和reint  # C/C++中static  # const  # inline三种关键字详细总结  # C++中const的实现机制深入分析  # C/C++中宏定义(#define)  # C/C++中的typedef和#define详解  # C++中const与#define的利弊分析  # 头文件  # 找不到  # 就会  # 是个  # 很好  # 也就  # 是指  # 也能  # 而不  # 这条  # 希望能  # 发现自己  # 不被  # 谢谢大家  # 更容易  # 则由  # 你不必  # 性好  # 完全相同  # 多份 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在香港免费服务器上快速搭建网站?  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel如何使用Blade模板引擎?(完整语法和示例)  打造顶配客厅影院,这份100寸电视推荐名单请查收  如何彻底删除建站之星生成的Banner?  如何快速搭建自助建站会员专属系统?  Laravel如何实现本地化和多语言支持?(i18n教程)  C语言设计一个闪闪的圣诞树  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  Linux系统运维自动化项目教程_Ansible批量管理实战  Laravel怎么清理缓存_Laravel optimize clear命令详解  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  如何在建站之星绑定自定义域名?  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  开心动漫网站制作软件下载,十分开心动画为何停播?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  微信小程序 闭包写法详细介绍  教你用AI将一段旋律扩展成一首完整的曲子  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Java解压缩zip - 解压缩多个文件或文件夹实例  如何快速登录WAP自助建站平台?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  网站建设要注意的标准 促进网站用户好感度!  ,网页ppt怎么弄成自己的ppt?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  网站页面设计需要考虑到这些问题  如何为不同团队 ID 动态生成多个独立按钮  Android GridView 滑动条设置一直显示状态(推荐)  JavaScript数据类型有哪些_如何准确判断一个变量的类型  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  *服务器网站为何频现安全漏洞?  网站建设整体流程解析,建站其实很容易!  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何在阿里云服务器自主搭建网站?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  iOS正则表达式验证手机号、邮箱、身份证号等  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  jQuery中的100个技巧汇总  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  微信小程序 scroll-view组件实现列表页实例代码