Share via


Derleyici Uyarısı (düzey 4, kapalı) C4464

göreli ekleme yolu '..' içeriyor

Yönerge #include , üst dizin tanımlayıcısı (yol kesimi) içeren bir .. yola sahiptir.

Açıklamalar

Visual Studio 2015 Güncelleştirme 1 ve sonraki sürümlerinde, etkinleştirilirse, derleyici üst dizin yolu kesimini (..) içeren bir #include yönergeyi algılayabilir ve uyarı verebilir. Kod bazen dış kitaplıklardan üst bilgileri eklemek için üst dizin göreli yollarını kullanan yazılır. Bu üst dizin göreli üst bilgi yolları kaynak dosyalarda belirtildiğinde bir risk oluşturur: Programcının hedeflediğinden farklı bir üst bilgi dosyası eklenerek program derlenebilir. Bu göreli yollar diğer geliştiricilerin derleme ortamlarına taşınabilir olmayabilir.

Bunun yerine, derleme ortamında ortam değişkeni veya (Ek ekleme dizinleri) derleyici seçeneği parametreleri/Igibi INCLUDE bu tür üst bilgilerin yollarını belirtmenizi öneririz. Visual Studio IDE'de, projenizin Yapılandırma Özellikleri>C/C++>Genel özellik sayfasında, Ek Ekleme Dizinleri özelliğinde yolları ayarlayabilirsiniz. Bunun için belirli bir uyarı olmasa da, projenizin ekleme dizinlerini belirtirken üst dizin yolu kesimlerinin kullanılmasını da önermeyiz.

Uyarı C4464, Visual Studio 2015 Güncelleştirme 1'de yenidir ve varsayılan olarak kapalıdır. Varsayılan olarak kapalı olan tüm uyarıları etkinleştirmek için kullanın /Wall . C4464'i düzey N uyarısı olarak etkinleştirmek için kullanın /wN4464 (burada N 1-4 arasıdır). Daha fazla bilgi için bkz . Varsayılan olarak kapalı olan derleyici uyarıları. Belirli bir derleyici sürümünde veya sonrasında gelen uyarıları devre dışı bırakma hakkında bilgi için bkz . Derleyici sürümüne göre derleyici uyarıları.

Örnek

Yönergelerde #include yol kesimlerini kullanan .. kaynak kod dosyaları, C4464 etkinleştirildiğinde veya seçenek belirtildiğinde bu uyarıyı /Wall tetikleyebilir.

Bu örnekte, proje kaynağı içinde C:\project\source ve dış kitaplığın üst bilgi dosyaları içindedir 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
// . . .

Bu sorunu çözmek için, projenizin ekleme dizinlerinin yolunu C:\other_lib\headers ekleyin. Ardından, üst bilgi dosyalarını dış üst bilgi olarak içerecek şekilde kaynağı değiştirin:

// 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
// . . .