#ifndef..#define..#endif和#pragma once的区别
来源:互联网 发布:金英杰免费网络课2017 编辑:程序博客网 时间:2024/06/05 20:30
两个的作用都是防止头文件重复包含
#ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点就是如果不同头文件的宏名不小心"撞车",可能就会导致头文件明明存在,编译器却硬说找不到声明的状况。
#pragma once则由编译器提供保证:同一个文件不会被包含多次。注意这里所说的"同一个文件"是指物理上的一个文件,而不是指内容相同的两个文件。带来的好处 是,你不必再费劲想个宏名了,当然也就不会出现宏名碰撞引发的奇怪问题。对应的缺点就是如果某个头文件有多份拷贝,本方法不能保证他们不被重复包含。当 然,相比宏名碰撞引发的"找不到声明"的问题,重复包含更容易被发现并修正。
方式一由语言支持所以移植性好,方式二 可以避免名字冲突,推荐使用#ifndef。
阅读全文
0 0
- 小议#pragma once 和 #ifndef #define #endif的区别
- #pragma once 和 #ifndef ... #define ... #endif 的区别【转载】
- #pragma once和#ifndef / #define / #endif的区别
- #pragma once 和 #ifndef ... #define ... #endif 的区别【转载】
- #pragma once和#ifndef,#define,#endif的区别
- #ifndef..#define..#endif和#pragma once的区别
- #pragma once与#ifndef #define ...#endif的区别
- #pragma once与#ifndef #define ...#endif的区别
- #pragma once与#ifndef #define ...#endif的区别
- #pragma once与#ifndef #define ...#endif的区别
- #pragma once与#ifndef #define #endif的区别
- #pragma once与#ifndef #define ...#endif的区别
- #pragma once与#ifndef #define #endif的区别 (比较全)
- #pragma once与#define #ifndef ...#endif的区别
- #pragma once 和#ifndef ... #define ... #endif 比较
- #pragma once 和#ifndef ... #define ... #endif 比较
- #pragma once 和#ifndef ... #define ... #endif 比较
- #pragma once 和 #ifndef,#define,#endif
- 出勤记录I (水道DP)
- java的递归和copy文件艺术
- Android传输数据时Rsa加密解密详解
- RESTful API 设计最佳实践
- java抽象类和抽象方法之间的关系
- #ifndef..#define..#endif和#pragma once的区别
- Java NIO 之 Buffer
- Android设计模式学习(包含Java设计模式)-Builder模式-AJDesignMode03
- Python数据处理pandas、numpy等第三方库函数笔记(持续更新)
- Windows重装系统
- oracle超出打开游标的最大数的原因和解决方案
- jeecg 上传时 多次点击确定按钮,就添加多次
- Linus实验楼笔记——第14节:正则表达式基础
- oracle中wm_concat()函数