我在 c++ 语言下的 ubuntu 中工作。
我有一个问题:我使用#include"header.h"
. 这和 一样/path/header.h
吗?我问你这个问题是因为我看到的不是一回事。需要一些解释。
我问你这个问题是因为我已经在我的电脑上下载并安装了 gsoap。我在一个文件夹中添加了所有必要的依赖项,并尝试在不安装 gsoap 的情况下运行该应用程序......在另一台计算机上。我有一些错误..我忘了添加 stdsoap2.h 文件...我今天将添加它..在我的文件夹中..
答案取决于:
如果您在包含路径中添加了“path/”,则仅包含“header.h”将起作用,因为编译器已经知道查找头文件的路径,如果没有,则必须包含整个路径“path/header.h”。 h”,因此编译器知道在哪里查找头文件。
不,从概念上讲,它们不一样。然而,结果可能是相同的。这取决于您如何告诉编译器查找标头(中的-I
标志g++
)。如果你用 编译-I /path/
,那么你会/path/header.h
用#include "header.h"
. 如果您不使用该包含路径标志,那么您必须编写#include "/path/header.h"
.
如果header.h
在目录path/
中,那么#include "header.h"
将适用于那些头文件和源文件(其中#include
header.h 恰好与header.h
( path/
) 位于同一目录中。
另一方面,如果您#include
-ingheader.h
在与 不同目录中的文件中path/
,则上述方法将行不通。为了使其工作,您可以尝试 2 种不同的方法:
#include
的完整路径header.h
。你的#include
遗嘱看起来像:
#include "path/header.h"
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++ 还要查看其他目录。