"多个包含警卫可能对"到底是什么?

时间:2015-11-17 22:40:52

标签: gcc header-files include-guards

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

作为输出的一部分,有一个部分"多个包含警卫可能对以下内容有用:",它列出了许多项目和系统标题。

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

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

1 个答案:

答案 0 :(得分:4)

在这种情况下,"多个"修改"包括" - 不是"警卫"。所以"包括警卫"和#34;多个包括警卫"是一回事。也就是说,他们防范同一文件的多个包含。

列表大致类似于:首先,所有文件都被考虑用于列表。但是,主文件被排除在外;和包含保护的文件;使用#pragma once打开的文件;和int[] arry = {11,12,13,14,15,16,17}; int sum = 0; for(int j = 0; j < 5; j++) { sum += arry[j]; System.out.println(sum); } System.out.println(); int average = sum / 5; System.out.println("Sum: " + sum); System.out.println("Average: " + average);

的文件

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