首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >需要澄清一下#语用一次

需要澄清一下#语用一次
EN

Stack Overflow用户
提问于 2014-02-18 03:00:55
回答 3查看 5.4K关注 0票数 6

我到处寻找一些关于#实用主义曾经做过什么的澄清,但仍然找不到确切的答案来回答我的一些问题。

#杂注是否曾经确保它包含在其中的头文件只被调用一次,以及包含在所述头文件中的头文件还没有包括在内?另外,如果只调用一次,是否意味着需要特定头的.cpp文件将无法访问它?如果头文件被标记为#杂注一次并包含在.cpp中,那么该头文件还能在其他地方使用吗?

这些都是我找不到的澄清。很抱歉,如果有文档澄清了这一点,但我真的找不到足够具体的东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-18 03:02:53

#pragma once只在一个翻译单元中保护一个文件,不包括其包含的子层次结构。(但是,如果该文件的第二次包含被阻止,它就没有机会加倍-包括任何其他内容。)

您仍然可以从另一个.cpp中再次包含它。

该文件通常由其inode编号标识。

请注意,#pragma once是严格不标准的,而且大多数人仍然倾向于传统的#ifndef头保护。

票数 8
EN

Stack Overflow用户

发布于 2014-02-18 03:03:19

#pragma once导致当前源文件仅在一次编译中包含一次。它本质上类似于#include警卫。

票数 4
EN

Stack Overflow用户

发布于 2014-02-18 03:18:18

是否曾经确保它包含在其中的头文件只被调用一次,并且包括在所述头文件中的头文件还没有包含?

该实用程序不影响其他标题。如果带有杂注“A.H”的标题包含“B.H”,则可以通过第三个标头或直接包含“B.H”。

如果只调用一次,这是否意味着需要特定头的.cpp文件将无法访问它?

您可以从任何您想要的任何地方包含标题,只要您认为合适的次数就可以。

如果头文件被标记为#杂注一次并包含在.cpp中,那么该头文件能否在其他地方再次使用?

是的,这是对头的正常操作。

渔获物在哪里?

如果您确实需要不止一次地包含头,那么每个include都会执行与不使用杂注一次或哨兵宏不同的操作。这些情况并不常见。

pragma once的一个好处是,它可以避免bug,比如有2个头文件,这些文件碰巧具有相同的哨兵宏。当2个头文件具有相同的文件名和相同的宏名称编码样式时,就会发生这种情况。

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

https://stackoverflow.com/questions/21843520

复制
相关文章

相似问题

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