![](/img/trans.png)
[英]If a particular header already included in stdafx.h - do I need to (have to/should to) to explicitly include it in a .cpp file?
[英]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.