#pragma once与 #ifndef的区别
2019独角兽企业重金招聘Python工程师标准>>>
为了避免同一个文件被include多次
1 #ifndef方式
2 #pragma once方式
在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。
方式一:
#ifndef __SOMEFILE_H__
#define __SOMEFILE_H__
... ... // 一些声明语句
#endif
方式二:
#pragma once
... ... // 一些声明语句
#ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点就是如果不同头文件的宏名不小心“撞车”,可能就会导致头文件明明存在,编译器却硬说找不到声明的状况
#pragma once则由编译器提供保证:同一个文件不会被包含多次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。带来的好处 是,你不必再费劲想个宏名了,当然也就不会出现宏名碰撞引发的奇怪问题。对应的缺点就是如果某个头文件有多份拷贝,本方法不能保证他们不被重复包含。当 然,相比宏名碰撞引发的“找不到声明”的问题,重复包含更容易被发现并修正。
方式一由语言支持所以移植性好,方式二 可以避免名字冲突
转载于:https://my.oschina.net/tonyyang/blog/34673
#pragma once与 #ifndef的区别相关推荐
- #pragma once与#ifndef的区别
#pragma once 和 #ifdef 都可以避免同一个文件被include多次,但二者的含义略有不同. 1. #pragma once方式 1.1. 使用方法 #pragma once// co ...
- #pragma once与 #ifndef的区别为了避免同一个文件被include多次
#pragma once与 #ifndef的区别为了避免同一个文件被include多次 1 #ifndef方式 2 #pragma once方式 在能够支持这两种方式的编译器上,二者并没有太大 ...
- 【c/c++】#pragma once 与 #ifndef 的区别解析
转载 [c/c++]#pragma once 与 #ifndef 的区别解析 2016-03-03 10:03:04 小明6号 阅读数 5092更多 分类专栏: [c/c++] 查看全文 http:/ ...
- c/c++ 避免重复包含 pragma once 和 #ifndef 的区别
1.#pragmaonce这个宏有什么作用? 为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式:另一种是#pragma once方式. 在能够支 ...
- #pragma once与 #ifndef的区别 (转)
http://www.cppblog.com/szhoftuncun/archive/2007/10/28/35356.html 为了避免同一个文件被include多次 1 #ifndef方式 2 ...
- #pragma once与#ifndef的区别?
/* 2017-12-20 创建人:Ruo_Xiao */ 一.#pragma once 作用:只要在头文件的最开始加入这条指令就能够保证头文件被编译一次. 最先应用与MicroSoftware Vi ...
- 粗谈pragma once与 #ifndef的区别
#ifnde不受编译器的任何限制: #pragma once不受一些较老的编译器支持,兼容性不够好
- #pragma once和#ifndef指令总结
在C/C++中,在使用预编译指令#include的时候,为了防止重复引用造成二义性(个人觉得这里二义性提的有点问题,觉得下面的补充可能理解好一些,有更好的解释可以帮我解答下哦.),通常有两种方式-- ...
- #pragma once 和 #ifndef ... #define ... #endif 的区别【转载】
在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作. 1. #pragma message 指令 message能够在编译消息输出窗口中输出相应的消 ...
最新文章
- Consultanting Service
- php代码审计工具_【学习笔记】PHP代码审计入门:代码审计实例2
- Ubuntu开机后一直循环登录,却进不去桌面
- Sonar问题解决:普通方法调用静态属性
- IIS7整合Tomcat6
- linux vscode设置在集成终端中打开
- c++学习笔记之异常
- 哎,最近心情非常烦乱!
- ESP32使用Arduino环境,安装、编译、下载、安装库
- linux命令增删改查,hw_linux_study_day003,Linux系统终端中的增删改查命令
- 大数据开发:数据仓库分层设计
- KEIL STC 仿真
- win系统安装夜神模拟器、夜神模拟器链接到HbuilderX
- 再看健康码和随申码,对比健康码和身份证,想想延展
- 【算法】-8大排序算法总结-Python
- ipsec-tools之racoon搭建
- H5播放B站源的flv视频
- 使用proteus仿真验证基尔霍夫定律
- svn设置文件提交过滤
- Unity3D Behavior Designer 行为树1 认识
热门文章
- APUE(第八章)进程控制
- Nginx 五大常见应用场景,Linux运维请收藏~
- Mac OS增删环境变量
- python selenium 处理弹窗_python selenium 弹出框处理的实现
- 30个实用的Python脚本(请收藏)
- 常用的 分布式事务 都有哪些?我该用哪个?
- 我国在计算机科学领域故事,我国巨型计算机领域的一代天骄
- 单片机简单的计算器c语言程序,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!...
- win2012服务器硬盘分区,Windows Server 2008/2012更改磁盘分区大小教程
- 万能门店小程序_门店小程序起名如何快速引流?