订购C++ #include

kvu*_*787 10 c c++ header-files

以下是Google的C++风格指南中#include的部分:

在dir/foo.cc或dir/foo_test.cc中,其主要目的是在dir2/foo2.h中实现或测试内容,请按以下方式订购包含:

dir2/foo2.h.
A blank line
C system files.
C++ system files.
A blank line
Other libraries' .h files.
Your project's .h files.
Run Code Online (Sandbox Code Playgroud)

请注意,任何相邻的空白行都应折叠.

使用首选顺序,如果dir2/foo2.h省略了任何必要的包含,则dir/foo.cc或dir/foo_test.cc的构建将中断.因此,此规则确保构建中断首先显示在处理这些文件的人员身上,而不是其他包中的无辜人员.

我不明白最后一行:

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

有人可以解释如何将dir2/foo2.h第一个结果置于"良好"构建中断,以及如何将dir2/foo2.h最后结果置于"坏"构建中断?

Jaa*_*a-c 15

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

X.h
dir2.h
Run Code Online (Sandbox Code Playgroud)

这将编译好.然后其他人包含在dir2.h其他地方,他们最终会产生编译错误dir2.h,即使他们从未改变过该文件中的任何内容......

如果您的订单正确,则应在首次加入时收到错误dir2.h.