C/C++#包含格式化最佳实践

在C/C++的时候,当我的.cpp / .c文件中包含.h文件时,我遇到了#include指令的文件路径. Google样式指南暗示在#include中使用部分文件路径.话虽如此,我目前正在做一个项目(虽然是一个小项目),当我“继承”代码时,为我编写了一个很好的布局Makefile(for G)和结构.也就是说,有一个名为/ project_name的目录,里面是Makefile和几个子目录.例如,/ project_name / inc保存.h文件,并且/ project_name / src保存.cpp文件. Makefile设置为查看每个子目录以编译源代码.

我的问题是,给定目录结构和Makefile,#include的“首选”方法是什么.我使用成功的两个选择如下.

> include“mycode.h”//不知道路径,假设我描述的结构
> include“../../project_name/inc/mycode.h”//似乎有点复杂,但更好地显示文件结构

有没有其他的选择,我失踪了?

解决方法

既不使用相反,将所有的公共头放在一个单一根的层次结构中.例如,如果您的项目是foo,请将所有公用标题放入(例如include / foo)中,但是不要犹豫,将每个组件的标题分组:
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标志.如果您必须安装头文件,那么这个设置可以简化操作,因为代码用户代码将使用相同的标题.

如果另外你有私有标题,使用相同的结构,但在另一层次结构中,例如:

src/io/parser.hh

你可能决定使用src / foo,也可能不会.不使用src / foo的优点是更容易看到什么是公共和私有头.

但不要使用相对路径.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...