This question already has an answer here:
Include guard and #pragma once in the same header file

(1个答案)


去年关闭。




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

例如:
#pragma once
#ifndef _ISTREAM_
#define _ISTREAM_
.
.
.

为什么两者都用?

最佳答案

如果支持一次#pragma,则可缩短编译时间,因为编译器仅包含一次文件。 #ifndef仍然再次包含该文件,但是中间的所有文本都被预处理器剥离了(因为#define已经被较早地求值,因此已被定义)。

讨论中here

关于c++ - 一次使用#pragma和#ifndef在同一文件中包含防护,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45241063/

10-13 07:05