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

时间:2015-03-26 20:41:43

标签: c++ directory include-path

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

  1. Dataloader包含 dataloader.h dataloader.cpp
  2. Analysis包含 analysis.h analysis.cpp

  3. dataloader.h 中我包含了 analysis.h ,如下所示:

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

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

      

    N.B。我注意到代码::阻止了一些原谅如何包含错误。什么时候   我们尝试使用gcc命令编译它变坏了


2 个答案:

答案 0 :(得分:2)

我同意你的教授。使用

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

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

关于:

  

N.B。我注意到代码::阻止了一些原谅如何包含错误。当我们尝试使用gcc命令编译它时,它变坏了

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

答案 1 :(得分:1)

我总是被教过,这是有道理的,你应该将你的包含在依赖于它们的文件中。

因此,在您的情况下,我假设您使用dataloader导入数据,然后使用analysis进行分析。那么在这种情况下,将这两者包含在主要内容中更有意义。

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