对于问题C/C++ include file order/best practices,最佳答案建议首先包含相关的标题。
但是,在两种情况下,我都找不到您为什么要这样做的充分理由。
Google和Mozilla编码规则对我来说看起来最好,因为它们会强制您首先包含最“标准”的标头。
这样,我认为您不太可能弄乱包含的文件(例如,通过未定义其他标头中使用的某些宏等),因此这似乎是我的最佳选择。
但是按照这个原理,为什么要先包含相关的标头?由于其中的任何语法错误都可能使以下所有标头混乱?
我认为最好在最后包含相关标头。
答案 0 :(得分:40)
这是为了确保您的客户在添加库标头时不会讨厌您。
如果标题易碎,并且由于错误的包含顺序而受到破坏,那么它可能不是在您第一次使用时就在您的环境中工作的-因为您包含了 所需的标题,但无法编译客户端代码。因为可能根本不明显,还需要插入其他标头才能使其正常工作。
首先包括与当前实现文件相对应的标头,以检查标头是否独立。自给自足不仅仅包括必要的标题。它还需要为您在API中使用的类型添加所需的前向声明。当然,如果您在其前面包含类型的标题,则标题会编译,但您可能不希望将其插入,因为您仅依赖于API中的类型名称。
某些样式指南禁止使用前向声明,因此这些声明可能不构成其基本原理。
答案 1 :(得分:15)
首先包含与cpp文件相关的头,以确保该头是自包含的,不需要其他包含即可编译