包括路径目录
Include Path Directory
我对如何将头文件添加到C++项目中有些困惑。通常,当我尝试使用 #include"genericheader.h"时,它说找不到该文件。但是,该文件通常存在,只是路径未正确写入所以我的问题,通过使用"genericheader.h"#include,编译器在哪里寻找这个文件?它是否在尝试包含它的文件的当前目录中查找?还是依赖于 IDE 之类的东西?
如果我尝试包含头文件,通常最佳做法是将其放置在尝试包含它的当前文件的目录中吗?
为菜鸟问题道歉。谢谢!
您使用的是包含指令的引用形式,它按以下顺序搜索包含文件:
- 与包含 #include 语句的文件位于同一目录中。
- 在当前打开的包含文件的目录中,按打开它们的顺序相反。搜索从父包含文件的目录开始,并继续向上通过任何祖父包含文件的目录。
- 沿着每个/I 编译器选项指定的路径。
- 沿着 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
放在当前目录中。
查看此处以获取更多信息。
相关文章:
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- 包括没有完整路径的我的库
- 包括 VS Code 上的完整文件路径
- 在路径的独立Qt项目中包括外部库
- 定义相对包括路径
- cmake:包括vs vs add_subDirectory:相对标头文件路径
- C++范围 TS 包括实验路径
- C++包括断开的相对路径
- 包括不排除静态库项目的用户路径的路径
- 如何指定远程预处理器包括192.0.2.17://usr/include的路径
- Visual Studio 2010 包括目录路径
- DBU-如何设置包括路径
- 提升:在Windows中包括路径
- 包括路径目录
- C或C++或WinApi中是否有任何功能来创建目录,包括指定路径中所有不存在的目录
- 问题包括来自不同目录的头文件[不是路径问题]
- 当路径不包括路径或驱动器号时,文件放置在哪里
- 包括c++visual studio 2010中带有#ifdef的附加库路径
- 使用不在根项目目录上的源文件(包括在搜索路径中的文件)时发生链接错误(Visual C++)
- 有关窗口中的路径以及包括 Visual Studio 中的文件的说明