3

我不明白为什么在预编译的头文件中不使用头文件保护......有什么想法吗?

4

4 回答 4

3

因为"stdafx.h"必须是文件中的第一个包含.cpp,而不是其他任何地方。

于 2011-05-12T01:05:04.997 回答
3

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

于 2011-05-12T02:06:29.987 回答
1

通常,每个 cpp 文件只包含一次 stdafx.h,作为第一条语句,通常其他文件不会包含它。因此,递归包含 stdafx.h 的机会很小,因此包含防护的“不必要性”。

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

于 2011-05-12T01:06:18.347 回答
1

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

于 2011-05-12T01:06:24.597 回答