包含路径目录

新手上路,请多包涵

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

如果我试图包含一个头文件,通常最好的做法是把它放在当前文件的目录中试图包含它?

为这个愚蠢的问题道歉。谢谢!

原文由 Izzo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 599
2 个回答

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

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

进一步阅读: https ://msdn.microsoft.com/en-us/library/36k2cdd4.aspx

原文由 shivaGuy 发布,翻译遵循 CC BY-SA 3.0 许可协议

搜索的顺序已经解释的很好了,这里我将解释如何告诉编译器在某些目录下进行搜索。假设您正在使用 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

原文由 zyy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题