【发布时间】:2018-04-29 19:17:30
【问题描述】:
我正在研究boost库,奇怪的是很多库都使用这种代码:
#ifndef BOOST_SERIALIZATION_ACCESS_HPP
#define BOOST_SERIALIZATION_ACCESS_HPP
// MS compatible compilers support #pragma once
#if defined(_MSC_VER)
# pragma once
#endif
MSDN 明确指出:
同时使用#include 保护习语和 #pragma 一次在同一个文件中
我不明白可能是什么原因。无论如何,include 守卫都可以完成这项工作,那么为什么我们还要费心写一次 pragma 呢?
【问题讨论】:
-
显然,编写该代码的人没有阅读 MSDN 的文档。
-
@RemyLebeau 我看到了很多,我们正在谈论提升!如果这么明显,还没有人发现,那就很奇怪了。
-
MSDN 15 年前没有说明这一点。 Boost 尝试支持一些可能无法按照我们预期的方式工作的古老编译器。
标签: c++ boost c-preprocessor