【问题标题】:What does the .. in #include "../somefile.h" mean#include "../somefile.h" 中的 .. 是什么意思
【发布时间】:2010-03-29 21:16:14
【问题描述】:

这是否意味着在上一个文件夹中搜索 somefile.h 或在项目文件夹中搜索 somefile.h?

【问题讨论】:

  • 永远不要在新代码中使用它,如果可以在旧代码中更改它。使用相对路径(../whatever)存在严重的可扩展性问题。

标签: c++ include c-preprocessor


【解决方案1】:

这意味着在找到包含指令的源文件的父文件夹中查找somefile.h

在 *nix 系统中(这个约定来自 AFAIK):

.        manse the current directory.
..       means one level up from the current directory.

例如,如果您有以下目录结构:

home
   |
   code
      | src
      | someOtherDirectory

您的源文件可能位于home/code/src 中,并且您拥有:

#include "../somefile.h"

在您的源代码中,编译器将在home/code/ 中查找somefile.h

【讨论】:

  • @Kip DOS 不是也从旧的 Unix 系统中获得了这个约定吗?
  • 次要注意 - 标准并不要求这就是“..”的含义,它在几乎任何文件系统中的实际含义。
  • 是的,我想是的。我只是指出它在 DOS 中也可以这样工作,因为“在 *nix 系统中”这句话听起来像是这些系统所独有的。
【解决方案2】:

这意味着在父目录中查找“somefile.h”,相对于包含指令的文件所在的目录。

【讨论】:

    【解决方案3】:

    表示源文件所在目录的父目录。

    【讨论】:

      【解决方案4】:

      好吧,如果您的源文件在/src 中,那么somefile.h 应该高于src/

      【讨论】:

        猜你喜欢
        • 2012-09-27
        • 1970-01-01
        • 2017-01-11
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        • 2011-02-12
        • 1970-01-01
        • 2011-08-12
        相关资源
        最近更新 更多