在包括中,如果我使用"test.h"与"path/test.h"相同吗?

in include if i use "test.h" is the same with "path/test.h"?

本文关键字:test path 包括中 如果      更新时间:2023-10-16

我在ubuntu下工作c++语言。

我有一个问题:我使用#include"header.h"。这和/path/header.h一样吗?我问你这个问题是因为正如我所看到的,这不是一回事。需要一些解释

我问你这个问题是因为我已经在我的电脑上下载并安装了gsoap。我在一个文件夹中添加了所有必要的依赖项,我试图在不安装gsoap的情况下运行应用程序…在另一台电脑上。我有一些错误…我忘记添加stdsoap2.h文件…我今天就把它添加到我的文件夹

答案是:

如果你在include path中添加了"path/",那么只包含"header.h"就可以了,因为编译器已经知道查找头文件的路径,如果没有的话然后,您必须包含整个路径"path/header.h",以便编译器知道在哪里查找头文件。

如果header.h在目录path/中,那么#include "header.h"将为那些头文件和源文件(其中#include header.h恰好与header.h (path/)在同一目录中)工作。

另一方面,如果您在与path/不同的目录下的文件中#include -ing header.h,则上述方法将不起作用。要使它工作,您可以尝试两种不同的方法:

  1. #includeheader.h的完整路径。你的#include看起来像这样:#include "path/header.h"
  2. path/目录包含到makefile。这将使g++也在这些目录中查找header.h。可以这样做(在makefile中):
    g++ <some parameters> -Ipath/ -c main.cpp -o main.o(假设header.h是从main.cpp内部调用的)。如果你选择这种方式,那么#include也会改变,像这样:
    #include <header.h>。注意使用-I标志作为g++的参数。这个标志告诉g++也查找其他目录。

不,它们在概念上是不同的。然而,结果可能是一样的。这取决于您如何告诉编译器查找头(g++中的-I标志)。如果你用-I /path/编译,那么你会用#include "header.h"找到/path/header.h。如果你不使用包含路径标志,那么你必须写#include "/path/header.h" .