Varsayılan olarak kapalı olan derleyici uyarıları

Çoğu geliştirici bunları yararlı bulmadığından derleyici varsayılan olarak kapatılan uyarıları destekler. Bazı durumlarda, stil seçimi veya eski koddaki yaygın deyimler hakkında uyarır. Diğer uyarılar, dile yönelik bir Microsoft uzantısının kullanılmasıyla ilgilidir. Bazı uyarılar, programcıların genellikle yanlış varsayımlarda bulunduğu bir alanı gösterir ve bu da beklenmeyen veya tanımsız davranışlara yol açabilir. Bu uyarıların tümü etkinleştirilirse, bazıları kitaplık üst bilgilerinde birçok kez görünebilir. C çalışma zamanı kitaplıkları ve C++ standart kitaplıkları yalnızca uyarı düzeyinde /W4hiçbir uyarı yaymaya yöneliktir.

Varsayılan olarak kapalı olan uyarıları etkinleştirme

Aşağıdaki seçeneklerden birini kullanarak normalde varsayılan olarak kapalı olan uyarıları etkinleştirebilirsiniz:

  • #pragma warning(default :warning_number)

    Belirtilen uyarı (warning_number) varsayılan düzeyinde etkinleştirilir. Uyarılara yönelik belgeler varsayılan uyarı düzeyini içerir.

  • #pragma warning(:warning_level warning_number)

    Belirtilen uyarı (warning_number) belirtilen düzeyde etkinleştirilir (warning_level).

  • /Wall

    /Wall varsayılan olarak kapalı olan tüm uyarıları etkinleştirir. Bu seçeneği kullanırsanız, seçeneğini kullanarak /wd tek tek uyarıları kapatabilirsiniz.

  • /wLNnnn

    Bu seçenek L düzeyinde nnnn uyarısını etkinleştirir.

Varsayılan olarak kapalı olan uyarılar

Visual Studio 2015 ve sonraki sürümleri

Visual Studio 2015 ve sonraki sürümlerde aşağıdaki uyarılar varsayılan olarak kapalıdır:

Uyarı Mesaj
C4061 (düzey 4) 'numaralandırma' sabit listesi anahtarındaki 'identifier' numaralandırıcısı, bir servis talebi etiketi tarafından açıkça işlenmez.
C4062 (düzey 4) 'numaralandırma' sabit listesi anahtarındaki 'identifier' numaralandırıcısı işlenmez.
C4165 (düzey 1) 'HRESULT' 'bool' olarak dönüştürülüyor; bunu istediğine emin misin?
C4191 (düzey 3) 'operator': 'type_of_expression' ile 'type_required' güvenli olmayan dönüştürme
C4242 (düzey 4) 'identifier': 'type1'den 'type2'ye dönüştürme, olası veri kaybı
C4254 (düzey 4) 'operator': 'type1'den 'type2'ye dönüştürme, olası veri kaybı
C4255 (düzey 4) 'function': verilen işlev prototipi yok: '()' öğesini '(void)' olarak dönüştürüyor
C4263 (düzey 4) 'function': member işlevi hiçbir temel sınıf sanal üye işlevini geçersiz kılmaz
C4264 (düzey 1) 'virtual_function': 'class' tabanından sanal üye işlevi için geçersiz kılma yok; işlev gizli
C4265 (düzey 3) 'class': sınıfın sanal işlevleri vardır, ancak yıkıcı sanal değildir
C4266 (düzey 4) 'function': 'type' tabanından sanal üye işlevi için geçersiz kılma yok; işlev gizli
C4287 (düzey 3) 'operator': unsigned/negative sabit uyumsuzluğu
C4289 (düzey 4) standart olmayan uzantı kullanıldı: 'var' : for-döngüsünde bildirilen döngü denetim değişkeni for-loop kapsamının dışında kullanılır
C4296 (düzey 4) 'operator': ifadesi her zaman false
C4339 (düzey 4) 'type' : CLR meta verilerinde tanımlanmamış tür kullanımı algılandı - bu türün kullanılması çalışma zamanı özel durumuyla sonuçlanabilir
C4342 (düzey 1) davranış değişikliği: 'function' çağrıldı, ancak önceki sürümlerde bir üye işleci çağrıldı
C4350 (düzey 1) davranış değişikliği: 'member2' yerine 'member1' çağrıldı
C4355 'this' : taban üye başlatıcı listesinde kullanıldı
C4365 (düzey 4) 'action': 'type_1' yerine 'type_2' dönüştürme, imzalı/imzasız uyuşmazlık
C4370 (düzey 3) daha iyi paketleme nedeniyle sınıfın düzeni önceki bir derleyici sürümünden farklı
C4371 (düzey 3) 'class-name': 'member' üyesinin daha iyi paketlemesi nedeniyle sınıfın düzeni derleyicinin önceki bir sürümünden değişmiş olabilir
C4388 (düzey 4) İmzalı/imzasız uyuşmazlığı
C4412 (düzey 2) 'function': işlev imzası 'type' türünü içeriyor; C++ nesneleri saf kod ile karışık veya yerel arasında geçiş yapmak için güvenli değildir
C4426 (düzey 1) üst bilgi eklendikten sonra değiştirilen iyileştirme bayraklarının nedeni #pragma optimize() 14.1 olabilir
C4435 (düzey 4) 'class1' : /vd2 altındaki nesne düzeni, 'class2' sanal tabanı nedeniyle değişir.
C4437 (düzey 4) 'class1' sanal tabanından 'class2' öğesine dynamic_cast bazı bağlamlarda başarısız olabilir.
C4444 (düzey 3) üst düzey '__unaligned' bu bağlamda uygulanmaz.
C4464 (düzey 4) göreli ekleme yolu '..' içeriyor
C4471 (düzey 4) Kapsamsız bir sabit listesi ileri bildiriminde temel alınan bir tür (varsayılan) Perm olmalıdır
C4472 (düzey 1) 'identifier' yerel bir sabit listesidir: Yönetilen bir sabit listesi bildirmek için bir erişim belirticisi (özel/genel) ekleyin
C4514 (düzey 4) 'function': başvurulmayan satır içi işlevi kaldırıldı
C4536 (düzey 4) 'tür adı': tür-adı meta veri sınırı olan 'limit' karakterlerini aşıyor
C4545 (düzey 1) virgülden önceki ifade bir bağımsız değişken listesi olmayan bir işlev olarak değerleniyor
C4546 (düzey 1) virgülden önceki işlev çağrısında bağımsız değişken listesi eksik
C4547 (düzey 1) 'operator': virgülden önceki işlecin hiçbir etkisi yoktur; yan etkisi olan beklenen işleç
C4548 (düzey 1) virgülden önceki ifadenin etkisi yok; yan etkisi olan ifade bekleniyordu
C4549 (düzey 1) 'operator1': virgülden önceki işlecin hiçbir etkisi yoktur; 'işleç2' amacınız mıydı?
C4555 (düzey 1) ifadenin etkisi yok; yan etkisi olan ifade bekleniyordu
C4557 (düzey 3) '__assume', 'efekt' efekti içeriyor
C4571 (düzey 4) bilgi: Visual C++ 7.1'den bu yana catch(...) semantiği değişti; yapılandırılmış özel durumlar (SEH) artık yakalanmaz
C4574 (düzey 4) 'tanımlayıcı' '0' olarak tanımlanmış: '#if tanımlayıcı' kullanmak mı istiyorsunuz?
C4577 (düzey 1) 'noexcept' özel durum işleme modu belirtilmediğinde kullanılır; özel durumda sonlandırma garanti edilmemektedir. Belirtmek /EHsc
C4582 (düzey 4) 'type': oluşturucu örtük olarak çağrılmaz
C4583 (düzey 4) 'type': yıkıcı örtük olarak çağrılmaz
C4587 (düzey 1) 'anonymous_structure': davranış değişikliği: oluşturucu artık örtük olarak çağrılmaz
C4588 (düzey 1) 'anonymous_structure': davranış değişikliği: yıkıcı artık örtük olarak çağrılmaz
C4596 (düzey 4) 'identifier': Üye bildirimi 14.3Perm'de geçersiz nitelenmiş ad
C4598 (düzey 1 ve düzey 3) '#include "header"': Önceden derlenmiş üst bilgideki üst bilgi numarası üst bilgi numarası , 14.3 konumundaki geçerli derlemeyle eşleşmiyor
C4599 (düzey 3) 'seçenekyolu': komut satırı bağımsız değişken numarası arg_number önceden derlenmiş üst bilgi 14.3 ile eşleşmiyor
C4605 (düzey 1) Geçerli komut satırında '/Dmakro' belirtildi, ancak önceden derlenmiş üst bilgi oluşturulduğunda belirtilmedi
C4608 (düzey 3) 'union_member', 'union_member' Perm başlatıcı listesindeki başka bir birleşim üyesi tarafından zaten başlatıldı
C4619 (düzey 3) #pragma uyarı: 'sayı' uyarı numarası yok
C4623 (düzey 4) 'derived class': bir taban sınıf varsayılan oluşturucusuna erişilemediğinden varsayılan oluşturucu üretilemedi
C4625 (düzey 4) 'derived class': bir taban sınıf kopya oluşturucusuna erişilemediğinden kopya oluşturucu üretilemedi
C4626 (düzey 4) 'derived class': bir taban sınıf atama işlecine erişilemediğinden atama işleci üretilemedi
C4628 (düzey 1) -Ze ile digraf kullanılması desteklenmez. Karakter dizisi 'digraph', 'char' için alternatif belirteç olarak yorumlanmaz
C4640 (düzey 3) 'instance': Yerel statik nesnenin oluşturulması iş parçacığı açısından güvenli değil
C4643 (düzey 4) Ad alanı std'sinde ileri 'tanımlayıcı' bildirimine C++ Standardı tarafından izin verilmez. 15.8
C4647 (düzey 3) davranış değişikliği: __is_pod(tür) önceki sürümlerde farklı değere sahip
C4654 (düzey 4) Önceden derlenmiş üst bilgi satırına dahil edilmeden önce yerleştirilen kod yoksayılır. Önceden derlenmiş üst bilgisine kod ekleyin. 14.1
C4668 (düzey 4) 'symbol' önişlemci makro olarak tanımlanmamış, yerine 'yönerge' için '0' ekleniyor
C4682 (düzey 4) 'symbol' : hiçbir yönlü parametre özniteliği belirtilmedi, varsayılan olarak [in]
C4686 (düzey 3) 'kullanıcı tanımlı tür': davranışta olası değişiklik, UDT dönüş çağırma kuralında değişiklik
C4692 (düzey 1) 'function': Özel olmayan üyenin imzası derleme özel yerel türü 'native_type' içeriyor
C4710 (düzey 4) 'function': işlev inlined değil
C4738 (düzey 3) 32 bit kayan sonuç bellekte depolanıyor, olası performans kaybı
C4746 'ifade' geçici erişimi /volatile:<iso|ms> ayarına tabidir; __iso_volatile_load/mağaza iç işlevlerini kullanmayı göz önünde bulundurun
C4749 (düzey 4) koşullu olarak desteklenen: "tür" standart olmayan düzen türüne uygulanan offsetof
C4767 (düzey 4) 'symbol' bölüm adı 8 karakterden uzun ve bağlayıcı tarafından kesilecek
C4774 (düzey 4) 'string' : bağımsız değişken numarasında beklenen biçim dizesi dize değişmez değeri değil
C4777 (düzey 4) 'function' : 'string' biçim dizesi 'type1' türünde bir bağımsız değişken gerektirir, ancak variadic bağımsız değişken numarası 'type2' türündedir
C4786 (düzey 3) 'symbol' : Hata ayıklama bilgilerinde nesne adı 'sayı' karakterlerine kesildi
C4800 (düzey 4) 'tür'den bool'a örtük dönüştürme. Olası bilgi kaybı 16.0
C4820 (düzey 4) 'member_name' yapısı sonrasında eklenen 'bytes' bayt doldurma
C4822 (düzey 1) 'member': yerel sınıf üyesi işlevinin gövdesi yok
C4826 (düzey 2) 'type1'den 'type2'ye dönüştürme işlemi işaretle genişletilmiştir. Bu beklenmeyen çalışma zamanı davranışına neden olabilir.
C4837 (düzey 4) trigraf algılandı: '??character' yerine 'character'
C4841 (düzey 4) standart olmayan uzantı kullanıldı: offsetof'ta kullanılan bileşik üye belirteci
C4842 (düzey 4) Birden çok devralma kullanan bir türe uygulanan 'offsetof' sonucunun derleyici sürümleri arasında tutarlı olacağı garanti edilmiyor
C4866 (düzey 4) 'file(line-number)' derleyicisi, çağrı işleci için soldan sağa değerlendirme sırasını zorunlu kılmayabilir
C4868 (düzey 4) 'file(line_number)' derleyicisi, kümeli başlatma listesinde soldan sağa değerlendirme sırasını zorunlu kılmayabilir
C4905 (düzey 1) geniş düz dize 'LPSTR' değerine atandı
C4906 (düzey 1) düz dize 'LPWSTR' değerine atandı
C4917 (düzey 1) 'bildirimci': GUID yalnızca bir sınıf, arabirim veya ad alanıyla ilişkilendirilebilir
C4928 (düzey 1) hatalı kopya başlatma; birden çok kullanıcı tanımlı dönüştürme örtük olarak uygulandı
C4931 (düzey 4) tür kitaplığının sayı bit işaretçiler için oluşturulduğunu varsayıyoruz
C4946 (düzey 1) reinterpret_cast ilgili sınıflar arasında kullanılır: 'class1' ve 'class2'
C4962 'function': profil verilerinin tutarsız olmasına neden olduğundan profil destekli iyileştirmeler devre dışı bırakıldı
C4986 (düzey 4) 'symbol': özel durum belirtimi önceki bildirimle eşleşmiyor
C4987 (düzey 4) standart olmayan uzantı kullanıldı: 'throw (...)'
C4988 (düzey 4) 'symbol': sınıf/işlev kapsamı dışında bildirilen değişken
C5022 'type': birden çok taşıma oluşturucu belirtildi
C5023 'type': birden çok taşıma atama işleci belirtildi
C5024 (düzey 4) 'type': move oluşturucu örtük olarak silinmiş olarak tanımlandı
C5025 (düzey 4) 'type': move assignment işleci örtük olarak silinmiş olarak tanımlandı
C5026 (düzey 1 ve düzey 4) 'type': move oluşturucu örtük olarak silinmiş olarak tanımlandı
C5027 (düzey 1 ve düzey 4) 'type': move assignment işleci örtük olarak silinmiş olarak tanımlandı
C5029 (düzey 4) standart olmayan uzantı kullanıldı: C++ içindeki hizalama öznitelikleri yalnızca değişkenlere, veri üyelerine ve etiket türlerine uygulanır
C5031 (düzey 4) #pragma uyarısı(pop): büyük olasılıkla uyuşmazlık, farklı dosya 14.1'e gönderilen uyarı durumu gösterildi
C5032 (düzey 4) karşılık gelen #pragma uyarı (pop) 14.1 olmayan #pragma uyarı (gönderme) algılandı

Visual Studio 2017 ve sonraki sürümleri

Visual Studio 2017 ve sonraki sürümlerde aşağıdaki uyarılar varsayılan olarak kapalıdır:

Uyarı Mesaj
C5034 iç 'iç' kullanımı, işlev işlevi-adının konuk kodu 15.3 olarak derlenmiş olmasını sağlar
C5035 'feature' özelliğinin kullanılması işlev işlevi-adının konuk kodu 15.3 olarak derlenmiş olmasını neden oluyor
C5036 (düzey 1) /hybrid:x86arm64 'type1' ile 'type2' 15.3 derlenirken varargs işlev işaretçisi dönüştürme
C5038 (düzey 4) 'member1' veri üyesi 'member2' 15.3 veri üyesinden sonra başlatılacak
C5039 (düzey 4) 'function': altında -EHcC işlevinin extern'ine geçirilen potansiyel atma işlevine yönelik işaretçi veya başvuru. Bu işlev bir özel durum oluşturursa tanımsız davranış oluşabilir. 15.5
C5041 (düzey 4) 'member-name': constexpr statik veri üyesi için satır dışı tanım gerekli değildir ve C++17'de kullanım dışıdır. 15.2
C5042 (düzey 3) 'function': blok kapsamındaki işlev bildirimleri standart C++'da 'satır içi' belirtilemez; 'satır içi' tanımlayıcısı 15.5'i kaldırın
C5045 /Qspectre anahtarı 15.7 olarak belirtilirse derleyici bellek yükü için Spectre azaltması ekler

Visual Studio 2019 ve sonraki sürümleri

Visual Studio 2019 ve sonraki sürümlerde aşağıdaki uyarılar varsayılan olarak kapalıdır:

Uyarı Mesaj
C5052 (düzey 3) 'anahtar sözcük-adı' anahtar sözcüğü C++ sürümünde kullanıma sunulmuştur ve 'option' komut satırı seçeneğinin kullanılmasını gerektirir' 16.1
C5204 (düzey 3) Sanal işlevleri olan bir sınıfın sanal olmayan önemsiz yıkıcısı vardır. 16.5
C5214 (düzey 4) Geçici nitelikli türe sahip bir işlenene 'anahtar sözcük' uygulanması C++20 16.7'de kullanım dışı bırakıldı
C5215 (düzey 4) 'function-parameter', geçici nitelenmiş türe sahip bir işlev parametresi C++20 16.7'de kullanım dışı bırakıldı
C5216 (düzey 4) 'return-type' C++20 16.7'de geçici bir nitelenmiş dönüş türü kullanım dışı bırakıldı
C5217 (düzey 4) volatile içeren yapılandırılmış bağlama bildirimi C++20 16.7'de kullanım dışı bırakıldı
C5219 (düzey 2) 'type-1'den 'type-2' türüne örtük dönüştürme, olası veri kaybı 16.7
C5220 (düzey 4) 'member': Geçici nitelikli türe sahip statik olmayan bir veri üyesi artık
derleyici tarafından oluşturulan kopyalama/taşıma oluşturucuları ve kopyalama/taşıma atama işleçleri önemsiz değildir 16.7
C5233 (düzey 4) açık lambda yakalama 'tanımlayıcı' kullanılmaz 16.10
C5240 (düzey 4) 'attribute-name': öznitelik, bu bozulma konumu 16.10'da yoksayıldı
C5243 (düzey 1) 'type-name': tamamlanmamış 'class-name' sınıfı kullanılması, ABI sınırlaması 16.10 nedeniyle olası bir tanım kuralı ihlaline neden olabilir
C5245 (düzey 4) 'function': iç bağlantı ile başvurulmayan işlev kaldırıldı
C5246 (düzey 1) 'member': Bir alt nesnenin başlatılması 16.10 küme ayracı içine sarmalanmalıdır
C5247 (düzey 1) 'section-name' bölümü C++ dinamik başlatma için ayrılmıştır. Bölümü el ile oluşturmak C++ dinamik başlatmasını engeller ve tanımsız 16.11 davranışına yol açabilir
C5248 (düzey 1) 'section-name' bölümü C++ dinamik başlatma için ayrılmıştır. Bölüme el ile koyulan değişken iyileştirilebilir ve derleyici tarafından oluşturulan dinamik başlatıcılara göre sırası belirtilmemiş 16.11

Visual Studio 2022 ve sonraki sürümleri

Visual Studio 2022 ve sonraki sürümlerde aşağıdaki uyarılar varsayılan olarak kapalıdır:

Uyarı Mesaj
C5249 (düzey 1) 'enumeration_name' türündeki 'bitfield', verilen 'bitfield_width' bit alanı genişliği içinde temsil edilemeyen değerlerle numaralandırıcılar adlandırdı. 17.0
C5250 (düzey 3) 'function_name': iç işlev bildirilmedi. 17.0
C5251 (düzey 4) 17.1 üst bilgisi eklendikten sonra segment-adı değiştirildi
C5254 (düzey 4) 'terse static assert' dil özelliği için '/std:c++17' 17.1 derleyici bayrağı gerekir
C5256 (düzey 1) 'sabit listesi': Sabit temel alınan türe sahip bir numaralandırmanın tanımlanmayan bildirimine yalnızca tek başına bildirim 17.2 olarak izin verilir
C5258 (düzey 4) Bu kullanım 17.2 için 'sembol'ün açıkça yakalanması gerekli değildir
C5259 (düzey 4) 'özelleştirilmiş tür': açık özelleştirme için 'template <>' 17.3 gerekir
C5262 (düzey 1, hata) örtük düşüş burada gerçekleşir; bir break ifadeniz eksik mi? 17.4 durumları arasında bir deyim kasıtlı olarak atlandığında break kullanın [[fallthrough]]
C5263 (düzey 4) Geçici bir nesnede 'std::move' çağrısı, kopyalama elision 17.4'i engeller
C5264 (düzey 4) 'variable-name': 'const' değişkeni kullanılmıyor 17,4
C5266 (düzey 4) Dönüş türündeki 'const' niteleyicinin etkisi yok 17,6
C5267 (düzey 4) 'type' için örtük kopya oluşturucu/atama işlecinin tanımı, kullanıcı tarafından sağlanan atama işleci/kopya oluşturucusu 17.7 olduğundan kullanım dışı bırakıldı

14.1 Bu uyarı Visual Studio 2015 Güncelleştirme 1'den itibaren kullanılabilir.
14.3 Bu uyarı Visual Studio 2015 Güncelleştirme 3'te başlatılıyor.
15.2 Bu uyarı Visual Studio 2017 sürüm 15.2'den itibaren kullanılabilir.
15.3 Bu uyarı Visual Studio 2017 sürüm 15.3'den itibaren kullanılabilir.
15.5 Bu uyarı Visual Studio 2017 sürüm 15.5'den itibaren kullanılabilir.
15.7 Bu uyarı Visual Studio 2017 sürüm 15.7'den itibaren kullanılabilir.
15.8 Bu uyarı Visual Studio 2017 sürüm 15.8'den itibaren kullanılabilir.
16.0 Bu uyarı Visual Studio 2019 RTM'den itibaren kullanılabilir.
16.5 Bu uyarı Visual Studio 2019 sürüm 16.5'den itibaren kullanılabilir.
16.7 Bu uyarı Visual Studio 2019 sürüm 16.7'den itibaren kullanılabilir.
16.10 Bu uyarı Visual Studio 2019 sürüm 16.10'dan itibaren kullanılabilir.
16.11 Bu uyarı Visual Studio 2019 sürüm 16.11'den itibaren kullanılabilir.
17.0 Bu uyarı Visual Studio 2022 sürüm 17.0'dan itibaren kullanılabilir.
17.1 Bu uyarı Visual Studio 2022 sürüm 17.1'den itibaren kullanılabilir.
17.2 Bu uyarı Visual Studio 2022 sürüm 17.2'den itibaren kullanılabilir.
17.3 Bu uyarı Visual Studio 2022 sürüm 17.3'den itibaren kullanılabilir.
17.4 Bu uyarı Visual Studio 2022 sürüm 17.4'den itibaren kullanılabilir.
17.5 Bu uyarı Visual Studio 2022 sürüm 17.5'den itibaren kullanılabilir.
17.6 Bu uyarı Visual Studio 2022 sürüm 17.6'dan itibaren kullanılabilir.
17.7 Bu uyarı Visual Studio 2022 sürüm 17.7'den itibaren kullanılabilir.
Perm Derleyici seçeneği ayarlanmadığı /permissive- sürece bu uyarı kapalıdır.

Önceki sürümlerde uyarılar varsayılan olarak kapalı

Bu uyarı Visual Studio 2015 sürüm 15.3'te varsayılan olarak kapalıydı ve Visual Studio 2015 sürüm 15.5'te etkinleştirildi:

Uyarı Mesaj
C4768 __declspec bağlantı belirtimlerinden önceki öznitelikler yoksayılır

Visual Studio 2015'den önceki derleyici sürümlerinde bu uyarılar varsayılan olarak kapalıydı:

Uyarı Mesaj
C4302 (düzey 2) 'conversion': 'type1' ile 'type2' kesme
C4311 (düzey 1) 'variable': 'type' ile 'type' için işaretçi kesilmesi
C4312 (düzey 1) 'operation': 'type1' değerinden daha büyük boyuttaki 'type2' türüne dönüştürme
C4319 (düzey 1) 'operator': 'type1' öğesini daha büyük boyuttaki 'type2' değerine genişleten sıfır

Visual Studio 2012'den önceki derleyici sürümlerinde bu uyarı varsayılan olarak kapalıydı:

Uyarı Mesaj
C4431 (düzey 4) tür belirticisi eksik - int varsayıldı. Not: C artık varsayılan int desteği içermiyor

Ayrıca bkz.

warning Pragma