インクルード ディレクティブを正しく使用する方法と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
」と 1 つありました。
私が見ることができる唯一のメリットは、ファイルを移動する必要はありませんが、ヘッダーを見つけるために常に ' ' ディレクティブを使用しなくても済む可能性があることですが-I
、柔軟性が失われ、sub-sub でコンパイルする複雑さがあります。 -ディレクトリなどは利点を上回っているようです。
それで、私は利益を見落としていますか?
入力していただきありがとうございます。私が見落としている「..」を使用した表記には大きな利点はないというのがコンセンサスだと思います。一般的に言えば、私は「somewhere/header.h」表記が好きです。私は新しいプロジェクトでそれを使用します。私が取り組んでいるものは決して新しいものではありません。
問題の 1 つは、さまざまなヘッダーのセットがあり、多くの場合、、、、などの接頭辞が付いているrspqr.h
ことです。これらはすべてディレクトリ内のコードに関連していますが、一部のヘッダーは中央のインクルード ディレクトリにあり、その他は中央のインクルード ディレクトリにあります。このディレクトリには、そのようなサブディレクトリはありません。(そして、コードの他のさまざまな領域について繰り返します。複数の場所にヘッダーがあり、他のコードによってランダムに必要とされます。)コードは長年にわたって非常に複雑になっているため、ものの移動は大きな問題です。また、makefile は、提供されるオプションに一貫性がありません。全体として、これは何十年にもわたる、それほど穏やかではないネグレクトの悲しい話です。何も壊さずにすべてを修正するのは、長くて退屈な仕事です。rsabc.h
rsdef.h
rsxyz.h
rsmp
rsmp
rsmp
-I