Дополнительные каталоги включения в Visual Studio для C ++ - PullRequest
0 голосов
/ 30 октября 2019

У меня есть структура папок, подобная этой:

материнская папка / Solution A / Project Aa / файл Aaa.h

материнская папка / Solution B / Project Bb / файл Bbb.h

Я бы хотел включить Aaa.h в Bbb.h.

Bbb.h выглядит так:

#include <A/Aa/Aaa.h>

...

В свойствах проекта Bb я пробовал C ++ -> General -> каталоги дополнительных включений: $ (ProjectDir) .. /../../

Или я тоже пробовал ../../../ или $ (ProjectDir) ../../..

Ничего не работает. Я получаю сообщение об ошибке: «не удается открыть исходный файл« A / ​​Aa / Aaa.h ».

Как правильно включить« Aaa.h »в Bbb.h?

1 Ответ

0 голосов
/ 30 октября 2019

Ваша проблема в том, что каталог "A" не находится в каталоге "B", а строка #include <A/Aa/Aaa.h> ищет путь, который вы указали , начиная с текущего каталога , поэтому она ищет:«B / Bb / A / Aa / Aaa.h» Чтобы решить эту проблему, вы можете сделать одно из двух:

  1. Укажите фактическое местоположение Aaa.h (относительно файла Bbb.h) в операторе включения: #include "../../A/Aa/Aaa.h>" (однако использование таких относительных путей вызовет предупреждения во многих компиляторах, поскольку они на самом деле не переносимы.)
  2. Добавьте каталог (снова(относительно проекта) в списке включаемых папок как "../../A/Aa", а затем просто укажите имя файла в строке включения: #include "Aaa.h" (чтобы избежать путаницы с вводом пути к каталогу,Вы можете просто «просмотреть» фактическую папку из всплывающего окна «Свойства».)

PS: Хотя это не строго соблюдается, обычай заключается в использовании < > «кавычек» для заголовкафайлы в каталогах system (например, #include <iostream>) и традиционных кавычках для предоставленные пользователем заголовки (например, #include "Bbb.h").

...