【问题标题】:"Multiple include guards may be useful for" what, exactly?“多个包含警卫可能对”什么有用,究竟是什么?
【发布时间】:2016-02-19 12:07:21
【问题描述】:

我一直在玩 gcc 的 -H 选项,它打印出有关 C 和 C++ 编译中直接和间接包含的信息 (relevant section of the gcc manual)。

作为输出的一部分,有一个部分“多个包含保护可能对:”有用,其中列出了许多项目和系统标头。

这是什么意思,这个列表是如何确定的,为什么说“多个”包含警卫可能有用?

(我熟悉包含守卫的一般概念,以及为什么要使用它们 - 我正在寻找有关此消息的详细信息,以及它对我的项目意味着什么。)

【问题讨论】:

    标签: gcc header-files include-guards


    【解决方案1】:

    在这种情况下,“multiple”修饰“includes”——而不是“guards”。所以“包含守卫”和“多个包含守卫”是一回事。也就是说,它们可以防止同一文件的多个包含。

    列表大致如下:首先,列表中的所有文件都被考虑在内。但是,主文件被排除在外;以及具有包含保护的文件;使用#import 打开的文件;以及具有#pragma once 的文件。

    使用守卫的原因是它们使头文件具有幂等性,并且可以减少编译时间。 IMO 它们是 C 和 C++ 的最佳实践。

    【讨论】:

      猜你喜欢
      • 2015-03-04
      • 2012-08-18
      • 1970-01-01
      • 2016-07-17
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 2012-08-27
      相关资源
      最近更新 更多