C++ 不包含之前 header 中的包含
C++ Don't include includes from previous header
假设我有以下内容:
Main.cpp
#include <Windows.h>
#include "B.h"
...
-
B.h
...
SomePrototypeFunctionNeedingWindowsH();
-
在 B.h 中,我不需要再次包含 Windows.h,因为它已经事先包含了。为清楚起见,我希望需要为每个需要它的新文件包含 Windows.h 。我正在使用 VS2015。
这可以做到吗?
这可以在不影响编译时间的情况下完成吗?
这会被认为是可接受的做法吗?
如果这样做,我 运行 会遇到任何问题吗?
也许您正在寻找 C++ 中的预处理器指令。
它们是这样的:
#ifndef HEADERFILE_H
#define HEADERFILE_H
/*Your header declarations/definitions*/
#endif
在这种预处理器技术中,您基本上告诉编译器它不应该多次包含相同的 header。
Refer to this post for more thorough understanding
将每个 .h
文件编译成一次性测试输出 .obj
s。这可以手动完成,也可以通过 运行 在您使用的任何项目管理系统上的脚本完成。
自然是要将.h文件添加到项目管理系统中。
一个可以编译为源文件的.h
文件包含了它需要的所有头文件。
确切的步骤——您可以遍历目录树中的每个 .h,输出一个 .h.cpp
文件,将该 .h.cpp
文件添加到您不以其他方式使用的项目中,然后构建那个项目。
你用什么语言写这个取决于你擅长什么脚本语言。
假设我有以下内容:
Main.cpp
#include <Windows.h>
#include "B.h"
...
-
B.h
...
SomePrototypeFunctionNeedingWindowsH();
-
在 B.h 中,我不需要再次包含 Windows.h,因为它已经事先包含了。为清楚起见,我希望需要为每个需要它的新文件包含 Windows.h 。我正在使用 VS2015。
这可以做到吗?
这可以在不影响编译时间的情况下完成吗?
这会被认为是可接受的做法吗?
如果这样做,我 运行 会遇到任何问题吗?
也许您正在寻找 C++ 中的预处理器指令。 它们是这样的:
#ifndef HEADERFILE_H
#define HEADERFILE_H
/*Your header declarations/definitions*/
#endif
在这种预处理器技术中,您基本上告诉编译器它不应该多次包含相同的 header。 Refer to this post for more thorough understanding
将每个 .h
文件编译成一次性测试输出 .obj
s。这可以手动完成,也可以通过 运行 在您使用的任何项目管理系统上的脚本完成。
自然是要将.h文件添加到项目管理系统中。
一个可以编译为源文件的.h
文件包含了它需要的所有头文件。
确切的步骤——您可以遍历目录树中的每个 .h,输出一个 .h.cpp
文件,将该 .h.cpp
文件添加到您不以其他方式使用的项目中,然后构建那个项目。
你用什么语言写这个取决于你擅长什么脚本语言。