手机
当前位置:查字典教程网 >编程开发 >C语言 >全面了解#pragma once与 #ifndef的区别
全面了解#pragma once与 #ifndef的区别
摘要:为了避免同一个文件被include多次1#ifndef方式2#pragmaonce方式在能够支持这两种方式的编译器上,二者并没有太大的区别,...

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

1 #ifndef方式

2 #pragma once方式

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

方式一:

#ifndef __SOMEFILE_H__

#define __SOMEFILE_H__

... ... // 一些声明语句

#endif

方式二:

#pragma once

... ... // 一些声明语句

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

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

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

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

【全面了解#pragma once与 #ifndef的区别】相关文章:

浅析C++中memset,memcpy,strcpy的区别

关于C++使用指针 堆和栈的区别分析

C与C++中结构体的区别

C++中Overload,Override,Hide之间的区别

浅谈内联函数与宏定义的区别详解

深入HRESULT与Windows Error Codes的区别详解

解析static在C和C++中的用法以及区别

基于C中含有if的宏定义详解

浅析_tmain()与main()的区别

exit和atexit的区别详细解析

精品推荐
分类导航