in include如果我使用“test.h”与“path / test.h”相同?

时间:2011-07-18 09:20:35

标签: c++ ubuntu gsoap

我在c ++语言下使用ubuntu。

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

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

3 个答案:

答案 0 :(得分:1)

答案取决于:

如果你的 include路径中添加了“path /”,那么仅包含“header.h”将起作用,因为编译器已经知道查找头文件的路径,如果没有 那么你必须包含整个路径“path / header.h”,以便编译器知道在哪里查找头文件。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果header.h位于path/目录中,那么#include "header.h"将适用于那些标题和源文件(#include header.h恰好相同目录为header.hpath/)。

另一方面,如果您#include - header.h在与path/不同的目录中的文件中,则上述方式无效。为了使其有效,您可以尝试两种不同的方法:

  1. #include header.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 ++也要查看其他目录。