0

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

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

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

4

3 回答 3

1

答案取决于:

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

于 2011-07-18T09:23:54.900 回答
0

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

于 2011-07-18T09:24:36.303 回答
0

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

另一方面,如果您#include-ingheader.h在与 不同目录中的文件中path/,则上述方法将行不通。为了使其工作,您可以尝试 2 种不同的方法:

  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++ 还要查看其他目录。
于 2011-07-18T09:38:57.903 回答