回答

1

通常情况下,stdafx.h将作为第一个语句每个cpp文件只包含一次,通常情况下,没有其他文件会包含它。因此,递归包含stdafx.h的机会很小,因此包含守卫的“不必要”。

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

2

因为"stdafx.h"必须是首先包含在.cpp文件,而不是其他地方。

1

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

3

如果你所做的只是包含其他头文件,那就没有必要。如果这些文件不能多次包含,他们将拥有自己的标头警卫。 stdafx.h本身并不关心它被包含多少次,除非你错误地使用它。

+1

+1,好点。完全没有想到这一点。 – Xeo 2011-05-12 02:09:40

相关问题