gpt4 book ai didi

c++ - Google C++ 风格指南包含顺序

转载 作者:行者123 更新时间:2023-11-30 04:52:30 24 4
gpt4 key购买 nike

Google C++ Style Guide建议按以下顺序将头文件(.h)包含到实现文件(.cpp、.cc)中:

In dir/foo.cc or dir/foo_test.cc, whose main purpose is to implement or test the stuff in dir2/foo2.h, order your includes as follows:

dir2/foo2.h.
A blank line
C system files.
C++ system files.
A blank line
Other libraries' .h files.
Your project's .h files.

如前所述,这样的顺序允许查看 dir2/foo2.h 中省略的依赖项在编译 foo 时-unit,而不是其他无辜的单位。看起来很合乎逻辑。

但是为什么Other libraries' .h files.Your project's .h files.放在列表的末尾?理论上也可能存在缺失的依赖项,这些依赖项将通过包含 C system files. 来隐藏。和 C++ system files.前。

也许假设应该在相关的实现文件中检测到其他(头)文件的问题?在那种情况下,只有 header 的库怎么样?

换句话说,将包含以下顺序:

dir2/foo2.h.
A blank line
Other libraries' .h files.
Your project's .h files.
A blank line
C system files.
C++ system files.

更快地找到隐藏的依赖项会更好吗?

例如,如果我只有 header 需要 <stdio.h> (但未在该文件中指定)。使用 Google 命令直接或间接包含 <stdio.h> 的概率比最后一步包含系统文件时更高(正如我之前建议的那样)。因此,找到隐藏依赖项的可能性很低。那么,如果在其他库/您的项目文件之前包含系统文件,我们将获得什么?

也不清楚,我是否应该在其他(用户定义的)头文件中使用推荐的包含文件顺序。

最佳答案

每个头文件(h、hpp、...)都应该有一个实现文件(cpp、cc、...),其中包含的顺序与问题中指定的顺序相同。 (即使实现文件是空的,除了这1个include)

所以就像“你的”头文件首先包含在“你的”实现文件中一样,每个“其他”头文件都应该首先包含在“其他”实现文件中。

这样,如果“other” header 不包含必需的 header ,则“other”实现文件将不会编译。

enter link description here

关于c++ - Google C++ 风格指南包含顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54347804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com