c++ #pragma once
在C/C++中,在使用预编译指令#include的时候,为了防止重复引用造成二义性,通常有两种方式
#ifndef指令防止代码块重复引用
#ifndef _CODE_BLOCK #define _CODE_BLOCK // code #endif// _CODE_BLOCK
保证同一份文件不会被包含两次,也能够保证不同文件完全相同的内容不会被包含两次
(编译时需要打开头文件才能判定是否有重复定义,因此在编译大型项目时,#ifndef会使得编译时间相对较长)#pragma once指令,在想要保护的文件开头写入
#pragma once
只能针对一个文件(物理上的一个文件,而不是指内容相同的两个文件),不能针对一个头文件中的一段代码.
如果某个头文件有多份拷贝,此方法不能保证它们不被重复包含。不会出现宏名碰撞引发的奇怪问题,大型项目的编译速度较快
总结: #ifndef更加灵活,兼容性好,#pragma once操作简单,效率高。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 yangbenbo@whu.edu.cn
文章标题:c++ #pragma once
本文作者:杨本泊
发布时间:2020-02-05, 09:59:27
最后更新:2023-07-09, 07:10:11
原始链接:http://yangbenbo.github.io/2020/02/05/c-pragma-once/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。