我对C ++中的#include
预处理程序指令有疑问。
在我的程序中,我想要包含另一个目录中的头文件。为此,我使用了完整路径,例如:
#include "full/path/to/my/header.hpp"
现在事实证明header.hpp
本身有一个包含(假设为#include "otherheader.hpp"
。)在编译过程中,编译器会抱怨它无法找到其他标题。
处理这个问题的最佳方法是什么,考虑到我也不想为每个头文件编写完整路径这一事实,特别是那些只需要“进一步向下”的文件?
答案 0 :(得分:7)
您应该使用编译器的SUPPLEMENTAL LOG GROUP "SAMPLESL" ("PIKEY") ALWAYS,
SUPPLEMENTAL LOG GROUP "SAMPLE2" ("UIKEY") ALWAYS,
选项。
-I
的示例:
g++
然后在你的代码中你可以简单地说:
g++ -I full/path/to/my/
答案 1 :(得分:3)
大多数编译器允许您在编译时为其他包含目录指定根目录。例如,在Visual C ++中指定-I
标志。对于gcc来说也是一样的。例如:
compiler -Ipath/to/headers myfile.c
答案 2 :(得分:0)
不指定包含的完整路径。改为向编译器指定包含目录,然后#include <foo>
知道foo
将在/some/path/foo
中找到,因为您告诉编译器在/some/path/
搜索包含。对于许多编译器,这是通过-I
选项完成的。