我一直在使用gcc的-H选项,它在C和C ++编译中打印出有关直接和间接包含的信息(relevant section of the gcc manual)。
作为输出的一部分,有一个部分"多个包含警卫可能对以下内容有用:",它列出了许多项目和系统标题。
这是什么意思,这个列表是如何确定的,为什么说"多个" 包含警卫可能有用?
(我熟悉包含警卫的一般概念,以及为什么要使用它们 - 我特别要查找有关此消息的详细信息,以及它对我的项目意味着什么。)
答案 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 ++的最佳实践。