发布
社区首页 >问答首页 >理解谷歌C++风格指南#include order指南的“构建中断”原理

理解谷歌C++风格指南#include order指南的“构建中断”原理
EN

Stack Overflow用户
提问于 2018-03-22 15:20:04
回答 2查看 1.6K关注 0票数 10

下面是关于#include's来自谷歌C++风格指南的一节

在dir/foo.cc或dir/foo_test.cc (其主要目的是实现或测试dir 2/foo2.h中的内容)中,命令您的内容如下: 迪尔2/foo2.h。一个空行C系统文件。C++系统文件。一个空行,其他库的.h文件。您的项目的.h文件。 请注意,任何相邻的空行都应该折叠。 对于首选排序,如果di2/foo2.h省略了任何必要的包含,那么dir/foo.cc或dir/foo_test.cc的构建就会中断。因此,此规则确保构建中断首先显示在处理这些文件的人员,而不是其他包中的无辜人员。

我不明白最后一句话:

因此,此规则确保构建中断首先显示在处理这些文件的人员,而不是其他包中的无辜人员。

有人能解释一下,如何将dir2/foo2.h放在第一个“好”构建中断中,以及如何将dir2/foo2.h放在最后一个“坏”构建中断中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-22 15:27:32

dir2.h中,您忘记了包括X.h。然后在当前文件中包括:

代码语言:javascript
代码运行次数:0
复制
X.h
dir2.h

这会编译得很好。然后其他人将dir2.h包含在其他地方,并最终导致源自dir2.h的编译错误,即使他们从未更改该文件中的任何内容.

如果您有正确的顺序,您应该在第一次包含dir2.h时得到错误。

票数 15
EN

Stack Overflow用户

发布于 2018-03-22 15:24:31

一个“好的”构建突破是当他打破了对打破的改变。因为那家伙能修好它。如果那个家伙没有注意到那些打破的变化,因为包含文件是排序的,所以它确实为他编译的机会很明显,那么它将被释放。

“坏”构建中断是当发布的版本破坏了该代码的用户的构建时。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49432385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档