包括路径目录

Include Path Directory

本文关键字:路径 包括      更新时间:2023-10-16

我对如何将头文件添加到C++项目中有些困惑。通常,当我尝试使用 #include"genericheader.h"时,它说找不到该文件。但是,该文件通常存在,只是路径未正确写入所以我的问题,通过使用"genericheader.h"#include,编译器在哪里寻找这个文件?它是否在尝试包含它的文件的当前目录中查找?还是依赖于 IDE 之类的东西?

如果我尝试包含

头文件,通常最佳做法是将其放置在尝试包含它的当前文件的目录中吗?

为菜鸟问题道歉。谢谢!

您使用的是包含指令的引用形式,它按以下顺序搜索包含文件:

  1. 与包含 #include 语句的文件位于同一目录中。
  2. 在当前打开的包含文件的目录中,按打开它们的顺序相反。搜索从父包含文件的目录开始,并继续向上通过任何祖父包含文件的目录。
  3. 沿着每个/I 编译器选项指定的路径。
  4. 沿着 INCLUDE 环境变量指定的路径。

延伸阅读:https://msdn.microsoft.com/en-us/library/36k2cdd4.aspx

搜索的顺序已经解释得很好,在这里我将解释如何告诉编译器在某些目录下搜索。假设你正在使用bash,那么在~/.bashrc中,写

C_INCLUDE_PATH="/full/path/to/your/file/:$C_INCLUDE_PATH" ## for C compiler
CPLUS_INCLUDE_PATH="/full/path/to/your/file/:$CPLUS_INCLUDE_PATH" ## for Cpp compiler
export C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH

并用source ~/.bashrc .你应该很高兴。

<小时 />

需要注意的一件事是,如果您有

#include "abc/xxx.h"
int main()
{
    return 0;
}

那么你的完整路径不应该有 abc .

有两种类型的标头。编译器库中的标头和项目中的标头。是使用 <> 还是""告诉编译器在何处查找头文件。但是,如果您只使用 <> ,编译器将无法找到它们。下面的示例显示了它是如何工作的:

#include <iostream> // library header
#include "helloWorld.h" //header in project
#include "../helloworld/headers/helloworld.h" //path to header in project
#include </path/to/custom/header/headerFile.h>
using namespace std;
int main()
{
   cout << "Hello World" << endl; 
   return 0;
}

如果使用 #include "genericheader.h" ,则应将文件genericheader.h放在当前目录中。
查看此处以获取更多信息。