Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
относительный путь включения содержит ".".
Замечания
Директива #include содержит путь, содержащий описатель родительского каталога ( .. сегмент пути).
В Visual Studio 2015 с обновлением 1 и более поздних версий компилятор может обнаруживать и выдавать предупреждение для #include директивы, содержащей сегмент пути родительского каталога (..). Иногда код записывается, использующий относительные пути родительского каталога для включения заголовков из внешних библиотек. Если эти пути заголовка относительно родительского каталога указываются в исходных файлах, он создает риск: программа может быть скомпилирована, включив другой файл заголовка, чем программист намерен. Эти относительные пути могут быть не переносимыми в другие среды сборки разработчиков.
Вместо этого рекомендуется указать пути к таким заголовкам в среде сборки, например INCLUDE в переменной среды или в параметрах /I для параметра компилятора (дополнительные каталоги включения). В интегрированной среде разработки Visual Studio можно задать пути на странице свойств>C/C++>General в свойстве "Дополнительные каталоги включения". Хотя для него нет определенного предупреждения, мы также не рекомендуем использовать сегменты пути родительского каталога при указании каталогов включаемых каталогов проекта.
Предупреждение C4464 новое в Visual Studio 2015 с обновлением 1 и по умолчанию отключено. Используйте /Wall для включения всех предупреждений, отключенных по умолчанию. Используйте /wN4464 для включения C4464 в качестве предупреждения уровня N (где N — 1–4). Дополнительные сведения см. в разделе "Предупреждения компилятора", отключенные по умолчанию. Сведения об отключении предупреждений, введенных в определенной версии компилятора, см . в предупреждениях компилятора по версии компилятора.
Пример
Файлы исходного кода, использующие .. сегменты пути в #include директивах, могут активировать это предупреждение при включении C4464 или при указании /Wall параметра.
В этом примере источник проекта находится в C:\project\source файлах заголовков внешней библиотеки:C:\other_lib\headers
// C:\project\source\C4464.cpp
// Compile by using: cl /w14464 C4464.cpp
#include "..\..\other_lib\headers\other.h" // C4464
#include "..\..\other_lib\headers\extras\nested.h" // C4464
// . . .
Чтобы устранить эту проблему, добавьте путь C:\other_lib\headers к каталогам включаемого проекта. Затем измените источник, чтобы включить файлы заголовков в качестве внешних заголовков:
// C:\project\source\C4464b.cpp
// Compile by using: cl /w14464 /I"C:\other_lib\headers" C4464b.cpp
#include <other.h> // OK
#include <extras\nested.h> // OK
// . . .