刚刚在<boost/asio.hpp>
中看到了这一点
#ifndef BOOST_ASIO_HPP
#define BOOST_ASIO_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
/// ....
#endif // BOOST_ASIO_HPP
忽略_MSC_VER
预处理器检查,在这种情况下使用#pragma once
有什么好处?预处理器报头保护不是确保在所有情况下,在所有平台上,报头内容只被included
一次吗?
发布于 2010-08-13 18:00:21
发布于 2010-08-13 17:59:25
发布于 2010-08-13 18:16:05
#pragma once
具有相同的目的,但include guards旨在要求进行更深层次的分析,以确保文件只包含一次-例如
// somerandomfileinmyproject.cpp
#undef BOOST_ASIO_HPP
#include <bost/asio.cpp>
除非编译器确实正确地处理了这种情况,否则它仍然需要打开该文件并将其传递给预处理器,即使它以前已经包含在内。
https://stackoverflow.com/questions/3475764
复制相似问题