C++ C++;Don';不包括上一标题中的包含项
假设我有以下几点:C++ C++;Don';不包括上一标题中的包含项,c++,include,visual-studio-2015,C++,Include,Visual Studio 2015,假设我有以下几点: Main.cpp #include <Windows.h> #include "B.h" ... - 在B.h中,我不需要再次包括Windows.h,因为它已经事先包括在内了。为清楚起见,我希望每个需要它的新文件都包含Windows.h。我正在使用VS2015 这能做到吗 这可以在不影响编译时间的情况下完成吗 这是否可以接受 P>我会遇到任何问题吗?如果是这样的话, < P>也许你正在寻找C++中的预处理器指令。 它们类似于: #ifndef HEADER
Main.cpp
#include <Windows.h>
#include "B.h"
...
-
在B.h中,我不需要再次包括Windows.h,因为它已经事先包括在内了。为清楚起见,我希望每个需要它的新文件都包含Windows.h。我正在使用VS2015
这能做到吗
这可以在不影响编译时间的情况下完成吗
这是否可以接受
<> P>我会遇到任何问题吗?如果是这样的话, < P>也许你正在寻找C++中的预处理器指令。 它们类似于:
#ifndef HEADERFILE_H
#define HEADERFILE_H
/*Your header declarations/definitions*/
#endif
在这种预处理器技术中,您基本上会告诉编译器,它不应该多次包含相同的头。
将每个
.h
文件编译成一次性测试输出.obj
s。这可以手动完成,也可以通过脚本在您使用的任何项目管理系统上运行
当然,必须向项目管理系统添加.h文件
可以编译为源文件的.h
文件包含所需的所有头文件
确切的步骤——您可以遍历目录树中的每个.h,输出一个.h.cpp
文件,将该.h.cpp
文件添加到您不使用的项目中,然后构建该项目
ypu使用哪种语言编写此脚本取决于您擅长哪种脚本语言。为什么要这样做?这就是include guards的用途。而且大多数编译器“理解”包含保护,甚至不会打开以前包含过的文件(我个人也会在B.h中包含Windows.h,所以你不必总是知道要使用B.h,我需要包含Windows.h)在B.h中包含Windows.h是正常的做法。为什么在需要b的地方包含windows和b是件好事?我想在b.h中包含b纯粹是出于语义/可读性的原因,而不是出于编译的目的。进一步考虑,如果存在长链的头依赖项,这可能会有很大的问题。不完全是这样,我不希望实际包含头,因为这会导致问题。我只想把include作为一种文档形式,告诉我文件中使用了什么。如果你想分发它,它还允许文件更多地独立于它自己,而不必再发送你所有的其他文件。这是一种聪明的思考方式。这还不是我想去的地方,这只是我想要的一个功能,但一点也不重要。我会记住这一点,谢谢。
#ifndef HEADERFILE_H
#define HEADERFILE_H
/*Your header declarations/definitions*/
#endif