我已经审查了如何正确使用包含指令和C++ #include 语义的问题,但都没有解决这个问题——当我输入标题时,SO 建议的其他问题也没有......
如果有的话,写作的好处是什么:
#include "../include/someheader.h"
#include "../otherdir/another.h"
与仅使用普通文件名相比:
#include "someheader.h"
#include "another.h"
或者可能是没有“ ..
”的相对名称:
#include "include/someheader.h"
#include "otherdir/another.h"
我看到的问题是:
- 您无法移动标题而不担心哪些源文件包含它。
- 您最终可能会在依赖项和错误报告中获得非常长的标题路径。我今天有一个“
../dir1/include/../../include/../dir2/../include/header.h
”。
我能看到的唯一优点是,虽然您不需要移动文件,但您可能无需总是使用 ' -I
' 指令来查找标题,但会失去灵活性,以及在 sub-sub 中编译的复杂性-目录等似乎超过了好处。
那么,我是否忽略了一个好处?
感谢您的投入。我认为共识是使用我忽略的“..”表示法没有任何重大好处。一般来说,我喜欢“somewhere/header.h”表示法;我确实在新项目中使用它。我正在研究的不是新的。
问题之一是存在各种标题集,通常带有前缀,例如rspqr.h
, rsabc.h
, rsdef.h
, rsxyz.h
。这些都与rsmp
目录中的代码有关,但有些头文件在其中rsmp
,有些在中心包含目录中,其中没有子目录等子目录rsmp
。(并对代码的其他各个区域重复此操作;在多个位置有标头,其他代码位随机需要。)移动内容是一个主要问题,因为多年来代码变得如此复杂。-I
并且生成文件在提供的选项方面并不一致。总而言之,这是一个几十年来不那么善意的忽视的悲惨故事。在不破坏任何东西的情况下修复这一切将是一项漫长而乏味的工作。