使用 #pragma 一次,#ifndef 在同一文件中包含保护



我在C++标准库(例如:istream(的一些头文件中看到#pragma once#ifndef/#define都包含保护。 我正在使用MS Visual Studio 2010 Express。

例如:

#pragma once
#ifndef _ISTREAM_
#define _ISTREAM_
.
.
.

为什么两者都使用?

如果支持#pragma once,则会导致更快的编译时间,因为编译器只包含该文件一次。#ifndef仍然再次包含该文件,但预处理器会去除中间的所有文本(因为之前已经计算了#define,因此已定义(。

这里有一个讨论:#pragma 一次与 #ifndef

这可能是为了交叉兼容性。Pragma曾经被广泛支持,但不一定是标准的一部分。

看看: #pragma 一次与包括警卫?

最新更新