我不明白为什么在预编译的头文件中不使用头文件保护......有什么想法吗?
问问题
1172 次
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 回答