为什么stdafx.h中不需要头文件保护?

时间:2011-05-10 20:27:20

标签: c++ visual-studio-2010 compiler-construction precompiled-headers

我不明白为什么在预编译的标题中没有使用标题保护...任何想法?

4 个答案:

答案 0 :(得分:3)

因为"stdafx.h"必须是{strong>首先包含在.cpp个文件中,而不是其他任何地方。

答案 1 :(得分:3)

如果你所做的只是包含其他标题,则没有必要。如果这些文件不能多次包含,他们将拥有自己的标题保护。除非您使用错误,否则stdafx.h本身并不关心它包含多少次。

答案 2 :(得分:1)

通常,每个cpp文件只包含一次stdafx.h作为第一个语句,通常,其他文件都不会包含它。因此,递归包括stdafx.h的可能性很小,因此包含守卫的“不必要”。

我仍然建议使用一个,以防万一,或者可能使用文件顶部的#pragma once

答案 3 :(得分:1)

我不知道预编译头的代码,但我猜它包含一个“#pragma once”,它具有相同的效果但只适用于VS(至少它不是标准的)。我记得向导使用这些文件创建了MFC文件。