#include <../header.h> 在 C++ 中是一种不好的做法吗?

Is #include <../header.h> a bad practice in C++?

我的 c++ 项目总的来说由两个目录组成,当然还有 main.cpp:

  1. Dataloader 包含 dataloader.hdataloader.cpp
  2. Analysis 包含 analysis.hanalysis.cpp

dataloader.h中我包含了analysis.h如下:

#include<../Analysis/analysis.h>

我的教授告诉我这是一个很大的不!!!!我们试图创建一个 makefile,他很惊讶。为什么这是一个不好的做法?以及如何使包含更简单。我正在研究 code::blocks 和 gcc 4.8 编译器。

N.B. I noticed that code::blocks some how forgives include errors. When we tried to compiled it by using gcc command it went bad


我同意你教授的观点。使用

#include<../Analysis/analysis.h>

使代码变得脆弱。如果使用不同的目录结构重新组织代码库,包含此类 #include 语句的文件将无法编译。

关于:

N.B. I noticed that code::blocks some how forgives include errors. When we tried to compiled it by using gcc command it went bad

-I. 添加到编译器标志以解决该问题。

好吧,我一直被教导,这是有道理的,你应该把你的包含放在依赖于它们的文件中。

所以在你的情况下,我假设你使用 dataloader 来导入数据,然后 analysis 来分析它。那么在这种情况下,将这两个都包含在 main 中更有意义。

相比之下,我制作了一个包含 print_board() 功能的 n by n tic tac toe 游戏。此函数依赖于带有常量 colors.h 的头文件来正确打印电路板。所以在这种情况下,我的 print_board.h 文件包含 colors.h 文件更有意义,因为它直接依赖它,没有别的。