一下内容摘抄自https://zh.wikipedia.org/wiki/Pragma_once
在C和C++编程语言中,#pragma once是一个非标准但是被广泛支持的前置处理符号,会让所在的文件在一个单独的编译中只被包含一次。以此方式,#pragma once
提供类似include防范的目的,但是拥有较少的代码且能避免名称的碰撞。
使用#pragma once
代替include防范将加快编译速度,因为这是一种高端的机制;编译器会自动比对文件名称或inode而不需要在头文件去判断#ifndef
和#endif
。
另一方面,部分编译器,例如GCC、clang等,也包含特别的代码来识别和有效率的管理include防范。因此使用#pragma once
并不会得到明显的加速。
此外,因为编译器自己必须承担管理#pragma once
,它不必定义新的指令名称,例如在include防范文章示例的H_GRANDFATHER
。这能排除名称碰撞的风险,意思就是至少第一次包含头文件不会再有错。
转载自原文链接, 如需删除请联系管理员。
原文链接:#pragma once的使用,转载请注明来源!