Я хочу добавить #включают директива к моему a.cpp файл и файл заголовка B.h находится в папке на два уровня вверх (например, если исходный файл находится в * Е: \ А \ В \ С \ D \ Е \ Г \ \ Н *, заголовочный файл находится в * E: \ A \ B \ C \ F *, конечно, имена будут намного длиннее этого), поэтому я набрал это запутанное утверждение в Visual Studio 2010:
#include"../../
И функция Intellisense в VS 10 показал список файлов, и B.h в этом! Я не знаю, правильно ли это утверждение, но я думаю, что с этим что-то не так. Кто-нибудь из вас может сказать мне, правильно это или нет? И не могли бы вы дать мне лучшее решение для этого?
Большое спасибо.
Почему бы это не сработало? Вы когда-нибудь делали cd ../../mydir
и проверил что это делает? Это эквивалент этого. ..
а также .
указать на специальный каталог в Windows и Linux. .
текущий каталог, в то время как ..
это предыдущий каталог. Так ../../file.h
вернется в два каталога, чтобы найти файл, который вы ищете. В конце концов, #include "..."
оператор работает с относительным путем, в котором находится файл. Обычно при написании библиотек и у вас есть основной detail
подкаталог вы пытаетесь получить к нему доступ через #include "../detail/myfile.hpp"
в то время как другие библиотеки, такие как boost, выбирают #include <boost/config/myfile.hpp>
Я думаю, что лучше всего включить "-I <INCLUDE_DIR>"
параметр для вашей сборки и просто #include заголовок без каталога в списке. Здесь вы указываете компилятору и компоновщику искать ваши заголовочные файлы.
..\
перемещает вас вверх на один каталог, так ..\..\
переместит вас вверх на два каталога. Я полагаю, это нормально, если вы можете предположить, что местоположение скрипта никогда не изменится. Однако, если вы переместили скрипт на другой диск, у вас будут проблемы. Возможно, было бы лучше включить E: \ A \ B \ C \ D \ E \ F \ B.h вместо того, чтобы доказать будущее.