在包括中,如果我使用"test.h"与"path/test.h"相同吗?
in include if i use "test.h" is the same with "path/test.h"?
我在ubuntu下工作c++语言。
我有一个问题:我使用#include"header.h"
。这和/path/header.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
,则上述方法将不起作用。要使它工作,您可以尝试两种不同的方法:
-
#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++也查找其他目录。
不,它们在概念上是不同的。然而,结果可能是一样的。这取决于您如何告诉编译器查找头(g++
中的-I
标志)。如果你用-I /path/
编译,那么你会用#include "header.h"
找到/path/header.h
。如果你不使用包含路径标志,那么你必须写#include "/path/header.h"
.
相关文章:
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何使用 Google Test 向测试添加元数据 / 如何将数据从 Google Test 发送到 TestEven
- Boost.TEST with CLion: "Test framework quit unexpectedly"
- Google Test for OpenCv c++
- 使用 Google Test 对自定义断言函数进行单元测试
- 柯南,CMake.test()生成XML报告
- 如何在 google test in windows 中管理断言
- google test PrintTo for std::set<std::string>
- 我正在尝试学习如何在 c++ 中传递指针,但出现错误:没有用于调用"test"的匹配函数。我做错了什么?
- Xcode Test Navigator 如何在纯C++项目中显示 Google 测试
- 如何强制嵌入式python使用与命令行相同的sys.path?
- 如何期望通过使用Google Test(Mock)以特定频率调用函数
- 无法将 Google Test NuGet 包添加到 Visual Studio Linux C++ 项目中
- 错误:无效使用非静态成员函数"int test::hotplug_callback(libusb_contex
- 为什么会给出"multiple test case"错误?
- 使用 C++ Boost.Test 组织单元测试?
- [LLVM-9 clang-9 OSX]: std::filesystem::path unrecognized
- Caffe在net_.reset上打印整个protext文件(new Net<float>(model_file,TEST))
- Google Test:错误 LNK2019:使用 Visual Studio 2017 与 CMake 进行未解析的外
- 在包括中,如果我使用"test.h"与"path/test.h"相同吗?