C++防止头文件被重复引入的3种方法
所属分类 c
浏览量 764
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 线程实例