gpt4 book ai didi

c++ - 为什么 Google 风格指南规定系统标题出现在项目标题之前?

转载 作者:行者123 更新时间:2023-12-01 14:07:44 26 4
gpt4 key购买 nike

在 C++ Google Style Guide's section on headers 中,第一行说:

Use standard order for readability and to avoid hidden dependencies: Related header, C library, C++ library, other libraries' .h, your project's .h.



但这对我来说是倒退的,因为项目的标题很可能依赖于系统标题,而系统标题显然不太可能依赖于项目标题。简化指南中给出的示例,我们得到以下 #include X.cpp 的线路依赖于 X.h , 标准头 <vector>和项目代码库中的另一个文件, A.h :
#include "X.h"

#include <vector>

#include "other/module/A.h"

A.h依赖于 <vector> ,样式的顺序隐藏了问题。如果标题按照最相关到最不相关的顺序包含在内,问题就会暴露出来。

我错过了什么?或许相反的论点是,当 A.cpp 时,这个问题就会暴露出来。被编译,但如果没有 A.cpp,则该参数不成立开始(即 A.h 仅包含标题)。

最佳答案

似乎好几年过去了,没有答案。

我注意到我实际上使用了由 Google Style Guide 规定的标题包含顺序。 ,没有太多的理由,因为与其他部分不同,名称和包含顺序部分确实没有给出任何内容。所以来自他们的goals我只能猜测这是为了一致性而做的,正如他们所说的那样允许一些自动化,以及“只需选择一个 [规则] 并停止担心它”,这样人们就可以停止争论规则。

太糟糕了,因为它看起来像 Nathan's answer 给出的顺序和推理在 this question今天更有意义。就个人而言,我会逐渐切换到这种风格的包含。

希望在 C++ 代码中管理依赖项的 future 改进将使这种情况变得更好。理想情况下,完全不必担心声明依赖项的顺序,并且有更好的时间检测和删除过时的包含、使用、导入等。

关于c++ - 为什么 Google 风格指南规定系统标题出现在项目标题之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43420799/

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