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

问题描述 投票:0回答:4

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

c++ visual-studio-2010 precompiled-headers
4个回答
3
投票

因为

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


3
投票

如果您所做的只是包含其他标头,则没有必要。如果这些文件不能被多次包含,它们将有自己的标头保护。

stdafx.h
本身并不关心它被包含了多少次,除非你用错了它。


1
投票

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

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

#pragma once


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.