首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在头保护中使用#杂注once的原因是什么?

在头保护中使用#杂注once的原因是什么?
EN

Stack Overflow用户
提问于 2010-08-13 17:56:14
回答 4查看 7.4K关注 0票数 18

刚刚在<boost/asio.hpp>中看到了这一点

代码语言:javascript
复制
#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一次吗?

EN

回答 4

Stack Overflow用户

发布于 2010-08-13 17:59:25

是的,标题保护确保标题内容只包含一次。但在这里,您使用#杂注来检查另一个定义,而不是包含文件。

下面的链接是SO中存在的关于标题保护的问题。

Purpose of Header guards

票数 0
EN

Stack Overflow用户

发布于 2010-08-13 18:16:05

#pragma once具有相同的目的,但include guards旨在要求进行更深层次的分析,以确保文件只包含一次-例如

代码语言:javascript
复制
// somerandomfileinmyproject.cpp
#undef BOOST_ASIO_HPP 
#include <bost/asio.cpp>

除非编译器确实正确地处理了这种情况,否则它仍然需要打开该文件并将其传递给预处理器,即使它以前已经包含在内。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3475764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档