下面是关于#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
放在最后一个“坏”构建中断中?
发布于 2018-03-22 15:27:32
在dir2.h
中,您忘记了包括X.h
。然后在当前文件中包括:
X.h
dir2.h
这会编译得很好。然后其他人将dir2.h
包含在其他地方,并最终导致源自dir2.h
的编译错误,即使他们从未更改该文件中的任何内容.
如果您有正确的顺序,您应该在第一次包含dir2.h
时得到错误。
发布于 2018-03-22 15:24:31
一个“好的”构建突破是当他打破了对打破的改变。因为那家伙能修好它。如果那个家伙没有注意到那些打破的变化,因为包含文件是排序的,所以它确实为他编译的机会很明显,那么它将被释放。
“坏”构建中断是当发布的版本破坏了该代码的用户的构建时。
https://stackoverflow.com/questions/49432385
复制相似问题