#pragma once与 #ifndef的区别 (转)
http://www.cppblog.com/szhoftuncun/archive/2007/10/28/35356.html
为了避免同一个文件被include多次
1 #ifndef方式
2 #pragma once方式
在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。
方式一:
#ifndef __SOMEFILE_H__
#define __SOMEFILE_H__
... ... // 一些声明语句
#endif
方式二:
#pragma once
... ... // 一些声明语句
#ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点就是如果不同头文件的宏名不小心“撞车”,可能就会导致头文件明明存在,编译器却硬说找不到声明的状况
#pragma once则由编译器提供保证:同一个文件不会被包含多次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。带来的好处是,你不必再费劲想个宏名了,当然也就不会出现宏名碰撞引发的奇怪问题。对应的缺点就是如果某个头文件有多份拷贝,本方法不能保证他们不被重复包含。当然,相比宏名碰撞引发的“找不到声明”的问题,重复包含更容易被发现并修正。
方式一由语言支持所以移植性好,方式二 可以避免名字冲突
#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:/ ...
- #pragma once与 #ifndef的区别
2019独角兽企业重金招聘Python工程师标准>>> 为了避免同一个文件被include多次 1 #ifndef方式 2 #pragma once方式 在能够支持这两种方式 ...
- c/c++ 避免重复包含 pragma once 和 #ifndef 的区别
1.#pragmaonce这个宏有什么作用? 为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式:另一种是#pragma once方式. 在能够支 ...
- #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能够在编译消息输出窗口中输出相应的消 ...
最新文章
- mxnet中ndarray*ndarray用来作为掩码进行与运算的用法
- html5插件教程,HTML5教程 | HTML5 time元素
- BGP MPLS中MCE技术介绍
- matlab仿真随机数的产生
- CSP-S 2021 退役记
- python+selenium之自动生成excle,保存到指定的目录下
- 计算机复试上机辅导班,软件工程考研辅导班:考研院校2020年计算机/软件工程复试经验总结...
- MySQL 面试必备 8 个知识点
- python数值运算操作符也叫做内置操作符_Python的操作符 - osc_r1gtal48的个人空间 - OSCHINA - 中文开源技术交流社区...
- 联想p720装系统_教你装系统第六节(装系统需要注意那些?)
- vb.net SpeechLib 播报语音封装类
- 关于redis (error) CLUSTERDOWN Hash slot not served
- 如何将Ant Design Icon本地化
- 极路由3HC5861刷openwrt
- ZigBee无线温度传感网络设计
- RxSwift--RxSwift简介
- 如何在Keil uVision5建立飞思卡尔K60开发板的工程
- 用3DS MAX和PHOTOSHOP制作机器人----作者: Egbert Tjong 来源: 火星时代
- 【2013最新XP系统下载】木叶 GhostXP SP3 装机版_2013.09
- 正点原子I.MX6ULL核心板火热售卖中,提供丰富文档资料,工业级与商业级两种版本可选.