多个包含在C ++中的#include

时间:2018-03-06 16:44:44

标签: c++ c++11 include

我对C ++中的#include预处理程序指令有疑问。

在我的程序中,我想要包含另一个目录中的头文件。为此,我使用了完整路径,例如:

#include "full/path/to/my/header.hpp"

现在事实证明header.hpp本身有一个包含(假设为#include "otherheader.hpp"。)在编译过程中,编译器会抱怨它无法找到其他标题。

处理这个问题的最佳方法是什么,考虑到我也不想为每个头文件编写完整路径这一事实,特别是那些只需要“进一步向下”的文件?

3 个答案:

答案 0 :(得分:7)

您应该使用编译器的SUPPLEMENTAL LOG GROUP "SAMPLESL" ("PIKEY") ALWAYS, SUPPLEMENTAL LOG GROUP "SAMPLE2" ("UIKEY") ALWAYS, 选项。

-I的示例:

g++

然后在你的代码中你可以简单地说:

g++ -I full/path/to/my/

More information on search path.

答案 1 :(得分:3)

大多数编译器允许您在编译时为其他包含目录指定根目录。例如,在Visual C ++中指定-I标志。对于gcc来说也是一样的。例如:

compiler -Ipath/to/headers myfile.c

答案 2 :(得分:0)

不指定包含的完整路径。改为向编译器指定包含目录,然后#include <foo>知道foo将在/some/path/foo中找到,因为您告诉编译器在/some/path/搜索包含。对于许多编译器,这是通过-I选项完成的。