2013-07-12 141 views
3

我发现C++库可以包括这样:C++库路径包含

#include "..\example.h" 
#include ".\another_example.h" 

是用来做什么的点?

+0

[当前和父路径](http://edndoc.esri.com/arcobjects/9.2/net/shared/geoprocessing/sharing_tools_and_toolboxes/pathnames_explained_colon_absolute_relative_unc_and_url.htm)。 –

+1

Nitpicking,但重要的是:你不用这种方式包含一个库,而是一个文件。包含指令将由*预处理器*处理。结果是编译器编译的* one *“翻译单元”。 – CouchDeveloper

+1

即使在Windows上也应该为路径分隔符使用正斜杠('/')。也就是说,如果你希望你的代码在开发环境以外的任何地方都有用。 “ –

回答

6

他们指示所包含的文件路径是相对于包括文件的实际路径this文章阅读更多关于路径分隔符。

.指向包括文件的实际目录
..指向包括文件的实际目录的父diretory

+0

你可能会*强调*这个给定的导入指令带*引号*文件路径是相对于*包含*文件的实际路径 - 我怀疑其他海报不清楚;) – CouchDeveloper

+0

@CouchDeveloper是这样的吗? THX的提示。 –

+0

是的,看起来好多了;) – CouchDeveloper

3

双点代表当前输入路径的父目录。 单点代表点的左侧当前输入的路径,用于表示您想要相对路径。

相对路径是相对于 用户或应用程序的工作目录的路径,所以完整的绝对路径不必是 给出。

如果您启动与/或路径(在* nix系统)DRIVELETTER:(在Windows上,例如D:),那么路径是绝对的。如果你不这样做 - 路径是相对的。如果路径是相对的 - 它会自动将文件的目录前缀到输入的路径。

实施例:

"dir/././../dir/.."是包含原始文件的目录。的减少是:

dir/././../dir/.. - >dir/./../dir/.. - >dir/../dir/.. - >/dir/.. - >. - >工作目录。我们删除了./,因为它是当前目录的别名。我们删除/dir/..,因为我们进入一个目录,dir并取回与..

之一的./最经常使用的功能(但是在外壳的情况下,如bash) - 它强制使用相对路径,而不是调用$ PATH变量中的可执行程序。例如,如果您在* nix的终端中键入ls,它将列出工作目录中的文件。如果输入./ls,它将在当前工作目录中运行可执行文件名称ls 并执行该程序所做的任何操作。

您可以在维基百科

+0

'”dir /./../ dir/..“'是当前目录 我不明白... – chipp

+0

@chipp,请参阅更新 –

+0

您的示例比清除问题更令人困惑的OP。此外,您不解释“工作目录”或“当前目录”的含义。这些在其他情况下具有其他含义,并且与这种情况下的含义不同。所以,我怀疑你也不清楚。 – CouchDeveloper

0

两点意味着比目前更高的一个一个目录。例如,如果您位于目录C:\ some \ directory中,则“.. \”将为“C:\ some”。

单点指的是当前目录。 “。\”意思是“C:\ some \ directory”

0

一个点是你的当前目录,两个点是你的父目录。

0

一个点.是文件的目录

2点..是文件的父目录。