嵌套 header 包含会延长编译时间
Nested header inclusion prolongs compilation
在我的项目中,我使用了动态包含的 third-party 库 - i. e.通过导入 *.lib-file 和 *.h-file。 lib 的 *.h-file 有一个包含保护。我 #included
这个文件在我的一个项目 header 中,它从 #pragma once
开始。后者也包含在我项目的几个 *.cpp-files 中。
方案如下:
third-party 库包含 'blah_blah.h'
#ifndef BLAH_BLAH_H
#define BLAH_BLAH_H
/* stuff here */
#endif
我的项目header'my.h'
#pragma once
#include "blah_blah.h"
/* stuff here */
我的一个 cpp 文件
#include "my.h"
/* stuff here */
问题如下。尽管在编译过程中既没有错误也没有警告,但我看到 "blah_blah.h"
被多次包含 - 至少,由其代码产生的警告出现在 [=43= 的输出 window 中] 2017 年大约 5 次,汇编持续到永远。我该怎么做才能避免这种情况?
is also included in several *.cpp-files of my project.
如果您编译例如 2 个源代码,包括直接或间接包含您的 header,那么一个源代码将总共包含 2 次。保护只针对一个源文件,每次编译器移动到另一个源文件编译none的header都是已知的。否则这意味着编译的源文件的顺序是相关的,这是不可能管理的,这是 makefile 的结尾并强制重新编译所有文件,无论你是什么文件已修改。
除此之外,您错过了 header 文件末尾的 #endif
在我的项目中,我使用了动态包含的 third-party 库 - i. e.通过导入 *.lib-file 和 *.h-file。 lib 的 *.h-file 有一个包含保护。我 #included
这个文件在我的一个项目 header 中,它从 #pragma once
开始。后者也包含在我项目的几个 *.cpp-files 中。
方案如下:
third-party 库包含 'blah_blah.h'
#ifndef BLAH_BLAH_H
#define BLAH_BLAH_H
/* stuff here */
#endif
我的项目header'my.h'
#pragma once
#include "blah_blah.h"
/* stuff here */
我的一个 cpp 文件
#include "my.h"
/* stuff here */
问题如下。尽管在编译过程中既没有错误也没有警告,但我看到 "blah_blah.h"
被多次包含 - 至少,由其代码产生的警告出现在 [=43= 的输出 window 中] 2017 年大约 5 次,汇编持续到永远。我该怎么做才能避免这种情况?
is also included in several *.cpp-files of my project.
如果您编译例如 2 个源代码,包括直接或间接包含您的 header,那么一个源代码将总共包含 2 次。保护只针对一个源文件,每次编译器移动到另一个源文件编译none的header都是已知的。否则这意味着编译的源文件的顺序是相关的,这是不可能管理的,这是 makefile 的结尾并强制重新编译所有文件,无论你是什么文件已修改。
除此之外,您错过了 header 文件末尾的 #endif