首页  

C++防止头文件被重复引入的3种方法     所属分类 c 浏览量 616
C 语言 处理重复 include
#ifndef / #define / #endif

使用宏定义避免重复引入
#ifndef _NAME_H
#define _NAME_H
//头文件内容
#endif

_NAME_H 全局唯一


使用#pragma once 避免重复引入
几乎所有常见的编译器都支持 #pragma once 指令
#pragma once 只能作用于某个具体的文件
而无法像 #ifndef 那样仅作用于指定的一段代码

使用_Pragma操作符
C99 标准中新增 _Pragma 操作符,可以看做是 #pragma 的增强版
_Pragma("once")

为防止用户重复引入系统库文件
几乎所有库文件中都采用了以上 3 种结构中的一种
因此重复引入系统库文件不会报错

考虑兼容性和可移植性 ,建议使用 第一种方式

在某些场景中,考虑到编译效率和可移植性,
#pragma once 和 #ifndef 经常被结合使用来避免头文件被重复引入

#pragma once
#ifndef _XXX_H
#define _XXX_H
...
#endif

当编译器可以识别 #pragma once 时 整个文件仅被编译一次
编译器不能识别 #pragma once 指令, 则使用 #ifndef

上一篇     下一篇
C++继承同名成员变量处理

C++动态内存分配实例

现代C++特性

c++11 STL 例子

c++模板和java泛型

c++11 线程实例