Visual Studio 2010 - файлы в папках без ../../Include.h - PullRequest
0 голосов
/ 10 августа 2010

Моя физическая файловая структура для проекта, который у меня есть, выглядит примерно так:

  • Исходная папка
  • Engine
    • Папка1
    • Папка2

и т. Д.

У меня есть некоторые файлы в «Source», некоторые в «Engine», некоторые в «Engine / Folder1» и т. Д.

В моем проекте я прошел все конфигурации -> Исходные каталоги и включил Source, Engine, Engine / Folder2 и т. Д. Однако, я все еще получаю ошибки, что он не может найти файлы, когда я пытаюсь включить "Foo.h" или что-то ещеиз другой папки.Есть ли способ сделать это, чтобы мне не нужно было ../Folder1/ перед всем?

Ответы [ 2 ]

1 голос
/ 10 августа 2010

Есть ли способ сделать это, чтобы мне не нужно было ../Folder1/ перед всем?

Да, есть.Ответ зависит от нескольких факторов, и я уверен, что я пропущу несколько.

Проверьте следующее:

  • В настройках компилятора установите флажок «Дополнительные включения» в разделе «C / C ++»."
  • Также проверьте в" VC ++ "значение для" Включить каталоги "
  • Проверьте настройку для" Игнорировать стандартные пути включения "в" C / C ++ / Препроцессор "
  • Проверьте параметры предварительно скомпилированного заголовка
  • Проверьте "#define" / "#undef" в ваших исходных файлах и настройках компилятора
  • Проверьте таблицы свойств, которые ваш проект может использовать или наследовать

Если вы используете "foo.h" (вместо) препроцессор сначала будет искать в определенных папках вашего проекта и, наконец, в определенных папках IDE.Если вы используетесначала он запускается в стандартных папках include, например, тех, которые требуются для стандартных библиотек времени выполнения.

Когда файл использует «../foo.h», это путь относительно расположения файла, который включаетфайл.Могут быть хитрые исключения.

Есть еще много вещей, которые могут повлиять на то, как препроцессор находит пути включения.Если вы не уверены, что препроцессор делает с определенным файлом, вы можете сделать вывод препроцессора видимым, включив «Preprocess to a file» в настройках препроцессора.Файл показывает вам исходный код файла после завершения препроцессора и до того, как компилятор начинает свою работу.

Все становится намного проще с большим опытом и, в частности, четкой стратегией структуры папок / проектови как включить файлы.Например, убедитесь, что у вас есть «#pragma Once» в качестве первой строки без комментариев в каждом включаемом файле.

Надеюсь, это даст вам несколько идей для следующих шагов.Удачи!

0 голосов
/ 10 августа 2010

Я считаю, что это хорошая практика:

  • Если путь к включенному файлу не требует использования "..", используйте относительные пути
  • Когда требуется использование «..», используйте абсолютные пути (то есть относительно корневой папки ваших исходных файлов.

Для работы абсолютных путей добавьте корневую исходную папку в список включаемых каталогов (относительно расположения файла проекта).

...