繁体   English   中英

#include处于不同目录结构中的头文件

[英]#include Header Files When They Are In a Different Directory Structure

我已经做了一些搜索,并找到了类似的线程,以正确的方式在C ++中包含头文件,但他们都没有完全回答这个问题。

我知道,为了在另一个文件夹中包含头文件,您只需使用以下语法:

#include "../myFolder/myFile.h"

但是当文件在不同的目录结构中有点远时呢? 例如,如果保证满足以下条件,则:

当前目录= / f1 / f2 / f3 / f4 / f5 / myFile.cpp

所需的头目录= / f1 / d2 / d3 / d4 / d5 / d6 / myHeader.h

我知道您可以设置“Additional Include Directories”属性或使用make文件,但我想知道是否有办法从#include语句中执行此操作。

".."放在#include中通常被认为是丑陋且无法维护的。

您正在使用的每个连贯库(例如boost)都有一个头文件层次结构根,您应该将其放在“其他包含目录”属性中。 对于提升它就像是

`C:/lib/boost_1_49`

在这个目录下,你通常会找到一个名为boost的目录,其中包含所有标题。 这带来了所有boost头开头的约定:

#include <boost/bla/bla.hpp>

这也适用于您正在编写的项目。 您应该确定其标题的最佳根目录,并从那里开始所有包含。
此规则的唯一例外应该是位于同一目录中的标头。 这些只能作为文件名包含#include "same-dir-header.h"

您还应该使用""<>区分。 引号应该是项目中的东西,尖括号应该是外部库(或者有些人会有它 - OS和C运行时库)

要完成@shoosh的答案,您应该告诉编译器那些“其他”头文件在哪里。 使用Windows上的gcc,如果它们位于c:\\ path \\ to \\ library中,则添加-I选项

-Ic:\path\to\library

小心路径中的空格,如果位置是c:\\my path\\to\\library ,则:

-I"c:\my path\to\library"

其他编译器将在命令行或通过IDE提供类似的选项。

暂无
暂无

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

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