#pragma once一般由编译器提供保证:同一个文件不会被包含多次。这里所说的”同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。无法对一个头文件中的一段代码作#pragma once声明,而只能针对文件。此方式不会出现宏名碰撞引发的奇怪问题,大型项目的编译速度也因此提供了一些。缺点是如果某个头文件有多份拷贝,此方法不能保证它们不被重复包含。在C/C++中,#pragma once是一个非标准但是被广泛支持的方式。
#pragma once方式产生于#ifndef之后。#ifndef方式受C/C++语言标准的支持,不受编译器的任何限制;而#pragma once方式有些编译器不支持(较老编译器不支持,如GCC 3.4版本之前不支持#pragmaonce),兼容性不够好。#ifndef可以针对一个文件中的部分代码,而#pragma once只能针对整个文件。相对而言,#ifndef更加灵活,兼容性好,#pragma once操作简单,效率高。
相关文章
- 07-18$on、$off、$once 事件监听器
- 07-18初学Flutter Each child must be laid out exactly once
- 07-18谈谈流计算中的『Exactly Once』特性
- 07-18spark stream消费kafka Exactly-once
- 07-18Kafka的Exactly-once语义与事务机制
- 07-18FLINK-Exactly-once
- 07-18【转】Kafka 0.11.0.0 是如何实现 Exactly-once 语义的
- 07-18实现一个EventEmitter类,这个类包含以下方法: on(监听事件,该事件可以被触发多次)- once(也是监听事件,但只能被触发一次)- fire(触发指定的事件)- off(移除指定事件的某
- 07-18pdf2swf 转换时报错。This file is too complex to render- SWF only supports 65536 shapes at once
- 07-18线程私有数据和pthread_once