"Multiple include guards may be useful for" 到底是什么?

"Multiple include guards may be useful for" what, exactly?

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

作为输出的一部分,有一个部分 "Multiple include guards may be useful for:",其中列出了一些项目和系统 headers。

这是什么意思,这个列表是如何确定的,为什么说 "Multiple" include guards 可能有用?

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

在这种情况下,"multiple" 修改 "includes" -- 而不是 "guards"。所以 "include guards" 和 "multiple include guards" 是一回事。也就是说,它们防止同一文件的多次包含。

列表大致是这样的:首先,列表中考虑了所有文件。但是,主文件被排除在外;和具有包含防护的文件;使用 #import 打开的文件;和具有 #pragma once.

的文件

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