【问题标题】:Is #include <../header.h> a bad practice in C++?#include <../header.h> 在 C++ 中是一种不好的做法吗?
【发布时间】:2015-05-31 01:24:58
【问题描述】:

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

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

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

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

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

注意我注意到 code::blocks 一些原谅包括错误的方式。什么时候 我们尝试使用 gcc 命令编译它,结果出错了


【问题讨论】:

  • 他给你什么理由?副手我看不出有什么问题。
  • 如果有任何东西丢失了../ ...那么应该没问题。
  • 他说这是一种不好的做法不知道为什么
  • 作为一名讲师他应该告诉你原因——问问他们。
  • 我认为它对 来说是 hacky,但对 "" 来说却不是。

标签: c++ directory include-path


【解决方案1】:

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

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

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

关于:

注意我注意到 code::blocks 一些原谅包括错误的方式。当我们尝试使用 gcc 命令编译它时,它变坏了

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

【讨论】:

  • 实际上在我们创建makefile并使用gcc命令编译时编译失败。 Code::blocks 真的很宽容,让以后的工作更加努力。最后它起作用了,但对包含不满意。谢谢你的回答
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多