gpt4 book ai didi

c++ - C/C++ #include 格式化最佳实践

转载 作者:可可西里 更新时间:2023-11-01 16:28:12 30 4
gpt4 key购买 nike

在我使用 C/C++ 的时间里,在将 .h 文件包含在 .cpp/.c 文件中时,我遇到了处理 #include 指令文件路径的不同方法。 Google 风格指南暗示在#include 中使用部分文件路径。话虽如此,我目前在一个项目(尽管是一个小项目)上工作,当我“继承”代码时,为我布置了一个布局精美的 Makefile(用于 G++)和结构。即,有一个名为/project_name 的目录,里面是 Makefile 和几个子目录。例如,/project_name/inc 包含 .h 文件,/project_name/src 包含 .cpp 文件。 Makefile 设置为查看每个子目录以编译源代码。

我的问题是,给定目录结构和 Makefile,#include 的“首选”方法是什么。下面列出了我成功使用的两个备选方案。

  1. include "mycode.h"//不知道路径,采用我描述的结构

  2. include "../../project_name/inc/mycode.h"//看起来有点复杂,但能更好地显示文件结构

还有我遗漏的其他选项吗?

最佳答案

两者都不用。相反,将所有 public header 放在具有单个根的某个层次结构中。例如,如果您的项目是 foo,请将所有公共(public) header 放入 include/foo 中。 , 但不要犹豫,按组件对 header 进行分组:

include/foo/io/printer.hh
include/foo/io/reader.hh
include/foo/job/job.hh
include/foo/job/scheduler.hh

那么如果你的代码只使用 <foo/io/printer.hh>等等,这需要您传递正确的 -I $(top_srcdir)/include项目 build 期间的标志。如果您必须安装 header ,此设置会简化操作,因为您的代码和用户的代码将以完全相同的方式使用 header 。

如果您还有私有(private) header ,请使用相同的结构,但在另一个层次结构中,例如:

src/io/parser.hh

您可能会也可能不会决定使用 src/foo .不使用 src/foo 的优势是更容易看出什么是公共(public)和私有(private) header 。

但永远不要使用相对路径。

关于c++ - C/C++ #include 格式化最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17060360/

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