簡體   English   中英

為什么這個令人困惑的#include“ .. \\ .. \\ [etc。 等等]”的聲明有效嗎?

[英]Why can this confusing #include“..\..\[etc. etc.]” statement work?

我想向我的A.cpp文件中添加#include指令,並且頭文件Bh位於兩層以上的文件夾中(例如,如果源文件位於* E:\\ A \\ B \\ C \\ D \\ E中\\ F \\ G \\ H * ,頭文件在* E:\\ A \\ B \\ C \\ F *中 ,當然,名稱會比這更長),所以我在Visual Studio 2010中鍵入了這個令人困惑的語句:

#include"../../

VS 10中的Intellisense功能顯示了文件列表,而Bh就在其中! 我不知道這句話是否正確,但我認為這有問題。 誰能告訴我這是對還是錯? 您能給我一個更好的解決方案嗎? 非常感謝你。

為什么不起作用? 您是否曾經完成cd ../../mydir並檢查了它的作用? 等價的。 ... 指向Windows和Linux中的特殊目錄。 . 是當前目錄,而..是上一個目錄。 因此../../file.h將返回兩個目錄以查找您要查找的文件。 畢竟, #include "..."語句適用於文件所在的相對路徑。通常,在編寫庫時,如果您有一個主要的detail子目錄,則可以嘗試通過#include "../detail/myfile.hpp"訪問該#include "../detail/myfile.hpp" ,而其他庫(例如boost)選擇#include <boost/config/myfile.hpp>

我認為最好在構建中包含"-I <INCLUDE_DIR>"參數,並僅#include標頭而不列出目錄。 在此,您告訴編譯器和鏈接器尋找頭文件。

..\\將您上移一個目錄,因此..\\..\\將您上移兩個目錄。 我想如果您可以假設腳本位置永遠不會改變,那很好。 但是,如果將腳本移動到其他驅動器上,則會遇到麻煩。 最好包括E:\\ A \\ B \\ C \\ D \\ E \\ F \\ Bh以便將來自己驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM