我不明白为什么预编译头文件中不使用头文件保护...有什么想法吗?
因为
"stdafx.h"
必须是 第一个包含在 .cpp
文件中,而不是其他地方。
如果您所做的只是包含其他标头,则没有必要。如果这些文件不能被多次包含,它们将有自己的标头保护。
stdafx.h
本身并不关心它被包含了多少次,除非你用错了它。
通常,每个 cpp 文件仅包含一次 stdafx.h,作为第一个语句,并且通常其他文件不会包含它。因此,递归包含 stdafx.h 的机会很小,因此包含防护是“不必要的”。
我仍然建议使用一个,以防万一,或者可能在文件顶部使用
#pragma once
。
我不知道预编译头的代码,但我猜它包含一个“#pragma Once”,它具有相同的效果但仅在VS中有效(至少它不是标准的)。我记得向导使用这些创建了 MFC 文件。