繁体   English   中英

所有#include-ed的“ .h”头文件都必须与.cpp文件位于同一文件夹中吗?

[英]Do all “.h” header files that are #include-ed have to be in the same folder as your .cpp file?

我正在做一个更大的项目,许多.cpp文件都包含位于不同目录中的文件,但是在代码中没有访问其他目录的引用。

谢谢您的帮助。

没有。

通常,您会给编译器(或更具体地说,是预处理器)一堆include目录,以告诉编译器在哪里查找头文件。 通常,这是通过Makefile(或在IDE中进行构建时,通过项目设置)完成的。

该选项的确切外观当然取决于每个编译器。 对于gcc, 它是-I选项

就我而言,您可以将.h和.cpp文件放在不同的目录中。 假设您有一个用于标题的文件夹,一个用于.cpps的文件夹。 在您的cpp文件中,您只需#include“ headers / myheader.h”,即可正常运行。

否。除了提到的-I编译器选项外,您还可以在#include指令的filename参数中使用(通常是相对的)path-spec。

对于:

#include "header.h"

编译器(或更严格地说是预处理器)将首先在包含源文件的文件夹中查找,然后通过以某种依赖于编译器的形式指定的文件列表进行查找-通常是命令行选项和/或环境变量。

对于:

#include <header.h> 

不会搜索包含源的文件夹,仅搜索指定给编译器的路径列表。

海湾合作委员会实际上有三个搜索组:

  • 当前源文件路径
  • 引用包含目录
  • 系统包含目录

带引号的标头按该顺序搜索所有三个,而<header.h>类型包含仅搜索最后一个。 并非所有的编译器都对构成“系统包含”的内容有具体的要求,后两种没有区别,并且以相同的方式指定。

您的编译器应记录实际行为,例如,有关GCC的信息,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM