gpt4 book ai didi

c++ - C++ 有标准的#include 约定吗?

转载 作者:IT老高 更新时间:2023-10-28 22:07:57 25 4
gpt4 key购买 nike

这是一个相当基本的问题,但它一直困扰着我。

我的项目有一堆 .cpp(实现)和 .hpp(定义)文件。

我发现当我添加额外的类和更多的类间依赖关系时,我必须#include 其他头文件。一两个星期后,我在很多地方都使用了#include 指令。稍后,我将尝试删除一些#include,并发现一切仍然有效,因为一些 OTHER 包含的类也是 #include 我刚刚删除的内容。

是否有一个简单易行的规则来添加#includes,可以从一开始就阻止这种丑陋的困惑发生?最佳做法是什么?

例如,我参与过的项目中,实现 .cpp 文件仅包含相应的定义 .hpp 文件,没有其他内容。如果有任何其他的.hpp 文件需要被实现.cpp 使用,它们都被定义.hpp 文件引用。

最佳答案

一些最佳实践:

  • 每个 .cpp 或 .C 文件都包含它需要的所有头文件,并且不依赖于包含其他相关头文件的头文件
  • 每个 .hpp 或 .h 文件都包含其所有依赖项,并且不依赖包含的头文件,包括其他相关头文件
  • 每个标题都用:

    #ifndef HEADER_XXX_INCLUDED
    #define HEADER_XXX_INCLUDED
    ...
    #endif /* HEADER_XXX_INCLUDED */
  • 标题在循环中不包含彼此

  • 通常:有一个“项目范围的头文件”,如“config.h”或“.h”,任何 .cpp 或 .C 文件总是包含first。通常,这包含与平台相关的配置数据、项目范围的常量和宏等。

这些不一定是“最佳实践”,而是我通常遵循的规则:

  • 项目特定的 header 包含为 #include "..."在系统范围的 header 之前,这些 header 包含为 #include <...>
  • 项目特定的标题按字母顺序顺序包含,以确保没有意外的、隐藏的要求它们包含的顺序。由于每个 header 都应包含其依赖项并且应保护 header 不被多次包含,因此您应该能够以您希望的任何顺序包含它们。

关于c++ - C++ 有标准的#include 约定吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/691079/

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