我在C ++标准库的一些头文件中看到(例如: istream ),#pragma once
和#ifndef/#define
都包含警卫。
我正在使用MS Visual Studio 2010 Express。
例如:
#pragma once
#ifndef _ISTREAM_
#define _ISTREAM_
.
.
.
为什么两者都被使用?
答案 0 :(得分:2)
如果支持#pragma一次,则会导致更快的编译时间,因为编译器只包含一次文件。 #ifndef仍然再次包含该文件,但其中的所有文本都被预处理器剥离(因为#define之前已经评估过,因此已定义)。
有关于它的讨论here
答案 1 :(得分:0)
这可能是交叉兼容性的。 Pragma曾被广泛支持,但不一定是标准的一部分。