gcc - "Multiple include guards may be useful for"究竟是什么?

标签 gcc header-files include-guards

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

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

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

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

最佳答案

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

该列表由大致如下组成:首先,所有文件都被考虑用于该列表。但是,主文件被排除在外;和具有包含保护的文件;使用 #import 打开的文件;和具有 #pragma once 的文件.

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

关于gcc - "Multiple include guards may be useful for"究竟是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768477/

相关文章:

C++ 头文件约定

r - 如何防止多次包含 source() R 代码?

c++ - 多个类中使用的函数

c++ - 构建小型中小企业客户端的未定义引用

c - ARM 设备上的 "undefined behaviour"

c++ - 把包括在所有正确的地方

c - 将 C#defines 导出为 shell 变量

php - 保护一个类免受另一个类的不良编程?

c++ - 手动调用 OpenGL 函数

c - 包含在内联汇编中