use*_*577 7 c++ directory header-files
我已经做了一些搜索,并找到了类似的线程,以正确的方式在C++中包含头文件,但他们都没有完全回答这个问题.
我知道,为了在另一个文件夹中包含头文件,您只需使用以下语法:
#include "../myFolder/myFile.h"
Run Code Online (Sandbox Code Playgroud)
但是当文件在不同的目录结构中有点远时呢?例如,如果保证满足以下条件,则:
当前目录=/f1/f2/f3/f4/f5/myFile.cpp
所需的头目录=/f1/d2/d3/d4/d5/d6/myHeader.h
我知道您可以设置"Additional Include Directories"属性或使用make文件,但我想知道是否有办法从#include语句中执行此操作.
sho*_*osh 10
把".."在#include通常被认为是丑陋,难以维护.
您正在使用的每个连贯库(例如boost)都有一个头文件层次结构根,您应该将其放在"其他包含目录"属性中.对于提升它就像是
`C:/lib/boost_1_49`
Run Code Online (Sandbox Code Playgroud)
在这个目录下,你通常会找到一个名为boost所有标题的目录.这带来了所有boost头开头的约定:
#include <boost/bla/bla.hpp>
Run Code Online (Sandbox Code Playgroud)
这也适用于您正在编写的项目.您应该确定其标题的最佳根目录,并从那里开始所有包含.
此规则的唯一例外应该是位于同一目录中的标头.这些只能作为文件名包含在内#include "same-dir-header.h"
你还应该在包含""和之间做出区分<>.引号应该是项目中的东西,尖括号应该是外部库(或者有些人会有它 - OS和C运行时库)
要完成 @shoosh 的答案,您应该告诉编译器那些“其他”头文件在哪里。在 Windows 上使用 gcc,如果它们位于 c:\path\to\library 中,则添加 -I 选项
-Ic:\path\to\library
Run Code Online (Sandbox Code Playgroud)
注意路径中的空格,如果位置是c:\my path\to\library,则:
-I"c:\my path\to\library"
Run Code Online (Sandbox Code Playgroud)
其他编译器将在命令行或通过 IDE 提供类似的选项。
| 归档时间: |
|
| 查看次数: |
28664 次 |
| 最近记录: |