【解決方法】どうやって "../ " 動作しますか? ( それはなんと呼ばれていますか ? )

プログラミングQA


この非常に古い (DOS ?) シンボルの使用法に関するドキュメントはどこにありますか?
Google さんに聞いてみようと思いますが、名前がわかりません。

のような「ツリー/パスを移動する」ために一般的に使用されます
#include ディレクティブ

#include “../../header.h”

( ディレクトリ ツリーを 2 回上る …? )

私が試したこと:

インテリセンスを使って「これを試して、あれを試して…」

解決策 1

あなたは正しいです。 #include "../../header.h" ソースファイルがある場所から2つ上のディレクトリにあるheader.hを含めるように言います。 これは、いわゆる 相対的 道。 つまり、 相対的 現在のソース ファイルに。 これは、 絶対の 次のようになるパス #include "/opt/package/source/include/header.h" ご了承ください #include "header.h" システムインクルードファイルを検索する前に、現在のディレクトリ(または必要に応じてフォルダ)で「header.h」というファイルを探すように指示されているため、これは相対パスのままです。

解決策 2

K5054 はほとんどの回答を提供しましたが、完全ではありません。 これは、現在のソース ディレクトリから 2 レベル離れたサブディレクトリを最初に探すようにコンパイラに指示します。 見つからない場合 header.h 次に、インクルード ディレクトリのリストを走査し、各ディレクトリから 2 レベル上を検索します。 これは、次のようなサブディレクトリを持つインクルード パスがある場合を意味します。 "/Dev/Projects/Libraries/SomeLibrary/Includes" リストされたコンパイラはサブディレクトリを検索します "/Dev/Projects/Libraries/" ファイルの header.h 2つ上のレベルだから Includes.

これはインクルード ファイルを指定するための推奨される方法です。 /Dev/ その階層のディレクトリは、ルート レベルである必要はありません。 これは、私のグループの誰も同じ場所に開発ディレクトリを持っていないため、私が頻繁に扱うものです。 Dev ディレクトリは固定要件ではありません。

解決策 3

ここにいくつかの情報があります: Linux の絶対パスと相対パスとその参照方法[^]

解決策 4

OK、私の意見では、本当の答えは
「。」 現在のディレクトリを示します
「..」親ディレクトリ
“../” “親ディレクトリに移動”
“./” 現在のディレクトリにとどまる

これが私のテストコードです-含む

bt_test_conncet.h

現在のディレクトリにある

を含む私の実際のコード

device.h

DIFFERENT QT プロジェクトにあります。

少し複雑ですが、私の QT プロジェクトはすべて共通のディレクトリ (4 レベル上) にあるので問題ありません。安全上の理由から、コピーを簡単に作成できます…

<pre>#include <QObject>
#include "./bt_test_conncet.h"   // current diretory
#include "../BT_TEST_CONNECT/bt_test_conncet.h" // via parent directory
#include "../../JAN_8/BT_TEST_CONNECT/bt_test_conncet.h" // via .pro directory
#include "../../../BT_JAN10_/JAN_8/BT_TEST_CONNECT/bt_test_conncet.h" // via current project
// for real
#include "../../../../Qt-5.15.2/bluetooth/btscanner/device.h"

コメント

タイトルとURLをコピーしました