Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
relatív belefoglalási elérési út tartalmazza a következőt: ".."
Megjegyzések
A #include utasítás olyan elérési útvonalat tartalmaz, amely egy szülőkönyvtár-meghatározót (.. elérési út szegmenst) foglal magában.
A Visual Studio 2015 Update 1 és újabb verzióiban, ha engedélyezve van, a fordító képes észlelni és figyelmeztetést kiadni egy #include irányelvre vonatkozóan, amely egy szülőkönyvtár elérési útját tartalmazó szegmenst (..) tartalmaz. Néha olyan kódot írnak, amely a szülőkönyvtár relatív elérési útjait használja a külső kódtárak fejléceinek belefoglalásához. Ha ezek a szülőkönyvtárhoz viszonyított fejléc elérési útjai meg vannak adva a forrásfájlokban, az kockázatot jelent: A program úgy fordítható, hogy a programozó szándékától eltérő fejlécfájlt is tartalmazhat. Előfordulhat, hogy ezek a relatív útvonalak nem hordozhatók más fejlesztők buildkörnyezeteibe.
Ehelyett javasoljuk, hogy adja meg az ilyen fejlécek elérési útját a buildkörnyezetben, például a INCLUDE környezeti változóban vagy a /I (További belefoglalási könyvtárak) fordító beállítás paramétereiben. A Visual Studio IDE-ben a projekt Konfigurációs tulajdonságok>C/C++>Általános tulajdonságlapján, a További belefoglalási könyvtárak tulajdonságban állíthatja be az elérési utakat. Bár erre nincs konkrét figyelmeztetés, nem javasoljuk a szülő könyvtár elérési útvonalainak szegmenseit használni a projekt include könyvtárainak megadásakor.
A C4464 figyelmeztetés új a Visual Studio 2015 1. frissítésében, és alapértelmezés szerint ki van kapcsolva. Az alapértelmezés szerint kikapcsolt összes figyelmeztetés engedélyezésére használható /Wall . Használja a /wN4464 parancsot a C4464 engedélyezéséhez szintű N figyelmeztetésként (ahol a N érték 1 és 4 között van). További információ: A Fordító alapértelmezés szerint ki van kapcsolva. Ha tudni szeretné, hogyan tilthatja le az adott fordítóverzióban vagy után bevezetett figyelmeztetéseket, olvassa el a Fordító figyelmeztetések verzió szerint.
Example
Az irányelvekben .. elérésiút-szegmenseket használó #include forráskódfájlok akkor aktiválhatják ezt a figyelmeztetést, ha a C4464 engedélyezve van, vagy ha a /Wall beállítás meg van adva.
Ebben a példában a projektforrás C:\project\source-ban található, és egy külső könyvtár fejlécfájljai C:\other_lib\headers-ban találhatók.
// 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
// . . .
A probléma megoldásához adja hozzá a projekt tartalmazási könyvtáraihoz az elérési utat C:\other_lib\headers. Ezután módosítsa a forrást úgy, hogy a fejlécfájlokat külső fejlécként tartalmazza:
// 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
// . . .