• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 全面了解#pragma once与 #ifndef的区别

全面了解#pragma once与 #ifndef的区别

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了pragma once,pragma once什么意思,pragma,pragma comment,pragma pack等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

为了避免同一个文件被include多次

1   #ifndef方式

2   #pragma once方式

在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。

方式一:

#ifndef __SOMEFILE_H__
#define __SOMEFILE_H__
... ... // 一些声明语句
#endif

方式二:

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

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

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

方式一由语言支持所以移植性好,方式二 可以避免名字冲突

以上这篇全面了解#pragma once与 #ifndef的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
  • 全面了解#pragma once与 #ifndef的区别

相关文章

  • 2017-05-28C++中Boost库裁剪与其应用详解
  • 2017-05-28浅谈C语言中的强符号、弱符号、强引用和弱引用
  • 2017-05-28C++卸载程序功能示例
  • 2017-05-28实例分析一个简单的Win32程序
  • 2017-05-28C/C++函数调用的几种方式总结
  • 2017-05-28C语言程序中递归算法的使用实例教程
  • 2017-05-28关于c语言指针的两处小tip分享
  • 2017-05-28使用Objective-C获取IPHONE手机IMSI序列号
  • 2017-05-28Cocos2d-x 3.x入门教程(二):Node节点类
  • 2017-05-28linux c多线程编程实例代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++访问注册表获取已安装软件信息列表示例代码
    • 浅析c++ 宏 #val 在unicode下的使用
    • C语言中怎么在main函数开始前执行函数
    • C++中引用(&)的用法与应用实例分析
    • 浅析C++中的虚函数
    • C语言字符串操作总结大全(超详细)
    • STL各个容器性能详细比较
    • C语言 枚举类型(Enum)详解及示例代码
    • visual studio 2015下boost库配置教程
    • 纯C语言:递归二进制转十进制源码分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有