Megosztás a következőn keresztül:


Alapértelmezés szerint a fordító figyelmeztetései ki vannak kapcsolva.

A fordító alapértelmezés szerint támogatja a kikapcsolt figyelmeztetéseket, mivel a fejlesztők többsége nem találja őket hasznosnak. Bizonyos esetekben figyelmeztetnek a stílusválasztásra, vagy a régebbi kódban használt gyakori kifejezésekre. Más figyelmeztetések a Microsoft-bővítmény nyelvre való használatával kapcsolatosak. Egyes figyelmeztetések olyan területet jeleznek, ahol a programozók gyakran helytelen feltételezéseket tesznek, ami váratlan vagy meghatározatlan viselkedéshez vezethet. Ha az összes figyelmeztetés engedélyezve van, néhányuk többször is megjelenhet a kódtár fejléceiben. A C futtatókörnyezeti kódtárak és a C++ standard kódtárak csak figyelmeztetési szinten /W4kívánnak figyelmeztetéseket kibocsátani.

Alapértelmezés szerint kikapcsolt figyelmeztetések engedélyezése

Az alapértelmezés szerint kikapcsolt figyelmeztetéseket az alábbi lehetőségek egyikével engedélyezheti:

  • #pragma warning(default : warning_number)

    A megadott figyelmeztetés (warning_number) az alapértelmezett szinten engedélyezve van. A figyelmeztetés dokumentációja tartalmazza a figyelmeztetés alapértelmezett szintjét.

  • #pragma warning( : warning_levelwarning_number)

    A megadott figyelmeztetés (warning_number) engedélyezve van a megadott szinten (warning_level).

  • /Wall

    /Wall alapértelmezés szerint kikapcsolt összes figyelmeztetést engedélyezi. Ha ezt a lehetőséget használja, kikapcsolhatja az egyes figyelmeztetéseket a /wd beállítás használatával.

  • /wL nnnn

    Ez a beállítás engedélyezi az Nnnn figyelmeztetését az L szinten.

Alapértelmezés szerint kikapcsolt figyelmeztetések

Visual Studio 2015 és újabb verziók

A Visual Studio 2015 és újabb verzióiban alapértelmezés szerint az alábbi figyelmeztetések vannak kikapcsolva:

Figyelmeztetés Üzenet
C4061 (4. szint) Az enumerátor "azonosítóját" az enumerálás kapcsolójában nem kezeli explicit módon egy esetcímke.
C4062 (4. szint) A rendszer nem kezeli az enumerátor "azonosítóját" az enumerálás kapcsolójában.
C4165 (1. szint) A "HRESULT"-t "bool"-ra konvertálják; Biztos, hogy ezt szeretné?
C4191 (3. szint) "operátor": nem biztonságos átalakítás "type_of_expression"-ról "type_required"-ra
C4242 (4. szint) "azonosító": átalakítás "type1"-ről "type2"-ra, adatvesztés lehetséges
C4254 (4. szint) "operátor": átalakítás "type1"-ről "type2"-ra, adatvesztés lehetséges
C4255 (4. szint) "függvény":: nincs megadva függvény prototípusa: "()" konvertálása "(void)" (void)"-ra
C4263 (4. szint) "függvény": a tagfüggvény nem bírál felül egyetlen alaposztályú virtuális tagfüggvényt sem
C4264 (1. szint) "virtual_function": nem áll rendelkezésre felülbírálás a virtuális tagfüggvényhez az "osztály" alapból; függvény rejtett
C4265 (3. szint) "osztály": az osztály virtuális függvényekkel rendelkezik, de a destruktor nem virtuális
C4266 (4. szint) "függvény": a "típus" alapból nem érhető el felülbírálás a virtuális tagfüggvényhez; függvény rejtett
C4287 (3. szint) "operátor": nem aláírt/negatív állandó eltérés
C4289 (4. szint) nem szabványos kiterjesztés: "var" : a for-loopban deklarált hurokvezérlési változó a for-loop hatókörön kívül van használva
C4296 (4. szint) "operátor": a kifejezés mindig hamis
C4339 (4. szint) "típus": a CLR metaadatokban észlelt nem definiált típus használata – az ilyen típus használata futásidejű kivételhez vezethet
C4342 (1. szint) viselkedésváltozás: "függvény" hívása, de a korábbi verziókban egy tag operátort hívtak meg
C4350 (1. szint) viselkedésváltozás: "member1" a "member2" helyett
C4355 "ez" : az alaptag-inicializálók listájában használatos
C4365 (4. szint) "művelet": átalakítás "type_1"-ról "type_2"-ra, aláírt/aláíratlan eltérés
C4370 (3. szint) az osztály elrendezése a jobb csomagolás miatt megváltozott a fordító korábbi verziójától
C4371 (3. szint) "osztálynév": az osztály elrendezése a fordító korábbi verziójához képest változhatott a tag "tag" jobb csomagolása miatt
C4388 (4. szint) aláírt/aláíratlan eltérés
C4412 (2. szint) "függvény": a függvény aláírása típust tartalmaz; A C++ objektumok nem biztonságosak a tiszta kód és a vegyes vagy natív kódok között
C4426 (1. szint) az optimalizálási jelzők a fejléc hozzáadása után módosultak, lehet, hogy #pragma 14.1-#pragma optimalizálási ()
C4435 (4. szint) "class1" : A /vd2 alatti objektumelrendezés a "class2" virtuális bázis miatt módosul.
C4437 (4. szint) dynamic_cast az "class1" virtuális bázisról a "class2"-be való átvétel bizonyos környezetekben meghiúsulhat.
C4444 (3. szint) legfelső szintű "__unaligned" nem implementálódik ebben a kontextusban.
C4464 (4. szint) relatív belefoglalási elérési út tartalmazza a következőt: ".."
C4471 (4. szint) a nem hatókörrel rendelkező enumerálás előrejeles deklarációjának alapul szolgáló (int assumed) Perm típusúnak kell lennie
C4472 (1. szint) Az "azonosító" egy natív szám: adjon hozzá egy hozzáférés-meghatározót (privát/nyilvános) felügyelt szám deklarálásához
C4514 (4. szint) "függvény": a nem hivatkozott beágyazott függvény el lett távolítva
C4536 (4. szint) "típusnév": a típusnév túllépi a "limit" karakterek metaadat-korlátját
C4545 (1. szint) kifejezés, mielőtt a vessző kiértékelése olyan függvényre történik, amely nem tartalmaz argumentumlistát
C4546 (1. szint) függvényhívás a hiányzó argumentumlista vesszője előtt
C4547 (1. szint) "operátor": a vessző előtti operátornak nincs hatása; várható operátor mellékhatással
C4548 (1. szint) a vessző előtti kifejezésnek nincs hatása; várt kifejezés mellékhatással
C4549 (1. szint) "operátor1": a vessző előtti operátornak nincs hatása; szándékában állt a "2. operátor"?
C4555 (1. szint) a kifejezésnek nincs hatása; várt kifejezés mellékhatással
C4557 (3. szint) A "__assume" az "effektus" effektust tartalmazza
C4571 (4. szint) tájékoztató: a catch(...) szemantikája megváltozott a Visual C++ 7.1 óta; a strukturált kivételeket (SEH) már nem fogják
C4574 (4. szint) Az "azonosító" 0-ra van definiálva: a "#if azonosítót" használta?
C4577 (1. szint) "noexcept" a megadott kivételkezelési mód nélkül használható; a kivétel megszűnése nem garantált. Részletez /EHsc
C4582 (4. szint) "típus": a konstruktor nem implicit módon van meghívva
C4583 (4. szint) "típus": a destruktor nem implicit módon van meghívva
C4587 (1. szint) "anonymous_structure": viselkedésváltozás: a konstruktor már nem implicit módon van meghívva
C4588 (1. szint) "anonymous_structure": viselkedésváltozás: a destruktort már nem implicit módon nevezzük
C4596 (4. szint) "azonosító": jogellenes minősített név a 14.3Perm tagi nyilatkozatban
C4598 (1. és 3. szint) "#include "fejléc": az előre összeállított fejléc fejlécszáma nem egyezik meg a jelenlegi fordítási hellyel a 14.3-nál
C4599 (3. szint) 'optionpath': parancssori argumentumszám arg_number nem egyezik az előre lefordított fejléc 14.3
C4605 (1. szint) Az aktuális parancssorban megadott "/Dmakró", de az előre összeállított fejléc létrehozásakor nem lett megadva
C4608 (3. szint) A "union_member" inicializálását már egy másik szakszervezeti tag is inicializálta az inicializáló listában, "union_member" Perm
C4619 (3. szint) #pragma figyelmeztetés: nincs "szám" figyelmeztető szám
C4623 (4. szint) "származtatott osztály": az alapértelmezett konstruktor nem hozható létre, mert az alaposztály alapértelmezett konstruktorja nem érhető el
C4625 (4. szint) "származtatott osztály": a másolási konstruktor nem hozható létre, mert az alaposztály másolási konstruktora nem érhető el
C4626 (4. szint) "származtatott osztály": a hozzárendelési operátor nem hozható létre, mert egy alaposztály-hozzárendelési operátor nem érhető el
C4628 (1. szint) -Ze nem támogatott digraphok. A karaktersorozat "digraph" nem értelmezett alternatív jogkivonatként a "karakter" esetében
C4640 (3. szint) "példány": a helyi statikus objektum felépítése nem szálbiztos
C4643 (4. szint) A C++ Standard nem engedélyezi az "azonosító" deklarálását az std névtérben. 15.8
C4647 (3. szint) viselkedésváltozás: __is_pod(típus) eltérő értékkel rendelkezik a korábbi verziókban
C4654 (4. szint) Az előre összeállított fejlécsor belefoglalása előtt elhelyezett kód figyelmen kívül lesz hagyva. Kód hozzáadása az előre összeállított fejléchez. 14.1
C4668 (4. szint) A "szimbólum" nem preprocesszor-makróként van definiálva, az "irányelvek" esetében a "0" értékre cserélve
C4682 (4. szint) 'symbol' : nincs megadva irányparaméter-attribútum, alapértelmezés szerint a következő: [in]
C4686 (3. szint) "felhasználó által definiált típus": a viselkedés lehetséges változása, az UDT visszatérési hívási konvenciójának módosítása
C4692 (1. szint) "függvény": a nem privát tag aláírása tartalmazza a "native_type" szerelvény magánjellegű natív típusát
C4710 (4. szint) "függvény": a függvény nem beágyazott
C4738 (3. szint) 32 bites lebegőpontos tárolás memóriavesztést, lehetséges teljesítményvesztést eredményez
C4746 a "kifejezés" illékony elérésére a /volatile:<iso|ms> beállítás vonatkozik; fontolja meg a __iso_volatile_load/store belső függvények használatát
C4749 (4. szint) feltételesen támogatott: a nem szabványos elrendezéstípusra alkalmazott "típus" eltolása
C4767 (4. szint) a "szimbólum" szakasznév 8 karakternél hosszabb, és a hivatkozás csonkolja
C4774 (4. szint) "sztring" : az argumentumszámban várt karakterlánc formázása nem sztringkonstans
C4777 (4. szint) "function" : a "sztring" formázási sztringhez "type1" típusú argumentum szükséges, de a variadikus argumentumszám típusa "type2"
C4786 (3. szint) "szimbólum" : az objektum neve "szám" karakterre csonkolt a hibakeresési információkban
C4800 (4. szint) Implicit átalakítás "típusról" bool-ra. Lehetséges adatvesztés 16.0
C4820 (4. szint) A "member_name" felépítése után hozzáadott "bájtok" bájtok
C4822 (1. szint) "tag": a helyi osztálytag-függvény nem rendelkezik törzsvel
C4826 (2. szint) A "type1"-ről a "type2" típusra való átalakítás ki van terjesztve. Ez váratlan futtatókörnyezeti viselkedést okozhat.
C4837 (4. szint) trigráf észlelte: "??karakter" helyett "karakter"
C4841 (4. szint) nem szabványos kiterjesztést használnak: összetett tag-tervező, amelyet eltoláskor használnak
C4842 (4. szint) a több öröklődést használó típusra alkalmazott "eltolás" eredménye nem garantáltan konzisztens a fordító kiadásai között
C4866 (4. szint) A "file(line-number)" fordító nem kényszerítheti a balról jobbra irányuló kiértékelési sorrendet az operátorhoz való híváshoz
C4868 (4. szint) Előfordulhat, hogy a "file(line_number)" fordító nem kényszeríti a balról jobbra történő kiértékelési sorrendet a zárójeles inicializálási listában
C4905 (1. szint) széles sztringkonstans LPSTR-be történő áttűnés
C4906 (1. szint) sztringkonstans LPWSTR-be történő átírása
C4917 (1. szint) "deklarátor": a GUID csak osztályhoz, interfészhez vagy névtérhez társítható
C4928 (1. szint) illegális másolási inicializálás; több felhasználó által definiált konverzió implicit módon lett alkalmazva
C4931 (4. szint) feltételezzük, hogy a típustár számbites mutatókhoz lett létrehozva
C4946 (1. szint) reinterpret_cast kapcsolódó osztályok között használják: "class1" és "class2"
C4962 "függvény": a profilalapú optimalizálások le vannak tiltva, mert az optimalizálás miatt a profiladatok inkonzisztenssé váltak
C4986 (4. szint) "szimbólum": a kivétel specifikációja nem egyezik az előző deklarációval
C4987 (4. szint) nem szabványos kiterjesztés: "dobás (...)"
C4988 (4. szint) "szimbólum": az osztályon/függvény hatókörén kívül deklarált változó
C5022 "típus": több áthelyezési konstruktor van megadva
C5023 "típus": több áthelyezési hozzárendelés-operátor van megadva
C5024 (4. szint) "típus": az áthelyezési konstruktor implicit módon töröltként lett definiálva
C5025 (4. szint) "típus": az áthelyezési hozzárendelés operátora implicit módon töröltként lett definiálva
C5026 (1. és 4. szint) "típus": az áthelyezési konstruktor implicit módon töröltként lett definiálva
C5027 (1. és 4. szint) "típus": az áthelyezési hozzárendelés operátora implicit módon töröltként lett definiálva
C5029 (4. szint) nem szabványos kiterjesztés: a C++ igazítási attribútumai csak változókra, adattagokra és címketípusokra vonatkoznak
C5031 (4. szint) #pragma warning(pop): valószínűleg nem egyezik, a 14.1-es fájlban leküldött figyelmeztető állapot
C5032 (4. szint) #pragma figyelmeztetés(leküldés) észlelte a megfelelő #pragma warning(pop) 14.1 nélkül

Visual Studio 2017 és újabb verziók

A Visual Studio 2017-ben és újabb verzióiban alapértelmezés szerint az alábbi figyelmeztetések vannak kikapcsolva:

Figyelmeztetés Üzenet
C5034 az intrinsic "intrinsic" használata miatt a függvény függvénynevéta 15.3-as vendégkódként kell lefordítani
C5035 A funkció "funkció" használata miatt a függvényfüggvény neve a 15.3-as vendégkódként lesz lefordítva
C5036 (1. szint) varargs függvény mutatójának konvertálása a /hybrid:x86arm64 'type1' és a "type2" 15.3 összeállításakor
C5038 (4. szint) a "member1" adattag inicializálása a "member2" 15.3 adattag után lesz inicializálva
C5039 (4. szint) 'függvény': mutató vagy hivatkozás a C függvény kiirtására átadott potenciálisan dobó függvényre a következő alatt -EHc: . Nem definiált viselkedés akkor fordulhat elő, ha ez a függvény kivételt jelez. 15.5
C5041 (4. szint) "tag-név": a constexpr statikus adattag soron kívüli definíciója nem szükséges, és a C++17-ben elavult. 15.2
C5042 (3. szint) "függvény": a blokk hatókörében lévő függvénydeklarációk nem adhatók meg "beágyazottként" a standard C++-ban; távolítsa el a 15.5-ös "beágyazott" jelölőt
C5045 A Fordító spectre-kockázatcsökkentést szúr be a memóriabetöltéshez, ha a /Qspectre kapcsoló a 15.7-et adta meg

Visual Studio 2019 és újabb verziók

A Visual Studio 2019-ben és újabb verzióiban alapértelmezés szerint az alábbi figyelmeztetések vannak kikapcsolva:

Figyelmeztetés Üzenet
C5052 (3. szint) A kulcsszónév a C++ verzióban lett bevezetve, és a 16.1-es"option" parancssori lehetőség használatát igényli
C5204 (3. szint) A virtuális függvényeket tartalmazó osztály nem virtuális triviális destruktorral rendelkezik. 16.5
C5214 (4. szint) A "kulcsszó" illékony minősített típusú operandusra való alkalmazása a C++20 16,7-ben elavult
C5215 (4. szint) A "function-parameter" változó típusú függvényparaméter elavult a C++20 16,7-ben
C5216 (4. szint) A "return-type" változó minősített visszatérési típus elavult A C++20 16,7
C5217 (4. szint) a C++20 16,7-ben elavult, illékony kötést tartalmazó strukturált kötési deklaráció
C5219 (2. szint) implicit átalakítás "type-1"-ről "type-2"-ra, lehetséges adatvesztés 16,7
C5220 (4. szint) "tag": egy nem statikus adattag, amely illékony minősített típussal rendelkezik, már nem jelenti azt, hogy
a fordító által létrehozott másolási/áthelyezési konstruktorok és a másolási/áthelyezési hozzárendelés-operátorok nem triviálisak 16.7
C5233 (4. szint) az explicit lambda capture "identifier" nem használatos 16.10
C5240 (4. szint) "attribútum-név": az attribútum figyelmen kívül lesz hagyva ebben a szintaktikai pozícióban 16.10
C5243 (1. szint) "típus-név": az "osztálynév" hiányos osztály használata egy definíciós szabály esetleges megsértését okozhatja a 16.10-es ABI-korlátozás miatt
C5245 (4. szint) 'függvény': belső kapcsolattal rendelkező, hivatkozás nélküli függvényt eltávolították
C5246 (1. szint) "tag": egy alobjektum inicializálását kapcsos zárójelbe kell burkolni 16.10
C5247 (1. szint) A szakasz neve a C++ dinamikus inicializáláshoz van fenntartva. A szakasz manuális létrehozása zavarja a C++ dinamikus inicializálást, és a 16.11-es nem definiált viselkedéshez vezethet
C5248 (1. szint) A szakasz neve a C++ dinamikus inicializáláshoz van fenntartva. A szakaszba manuálisan helyezett változó optimalizálható, és a fordító által generált dinamikus inicializálókhoz viszonyított sorrendje meghatározatlan 16.11

Visual Studio 2022 és újabb verziók

A Visual Studio 2022-ben és újabb verzióiban alapértelmezés szerint az alábbi figyelmeztetések vannak kikapcsolva:

Figyelmeztetés Üzenet
C5249 (1. szint) A(z) 'bitmező' a(z) 'enumeration_name' típusú megnevezett felsorolók értékeivel rendelkezik, amelyek nem ábrázolhatók a 'bitmező szélességében'. 17.0
C5250 (3. szint) 'function_name': belső függvény nincs deklarálva. 17.0
C5251 (4. szint) a szegmens neve a 17.1 fejléc hozzáadása után módosult
C5254 (4. szint) A "terse static assert" nyelvi funkcióhoz "/std:c++17" 17.1 fordítójelző szükséges
C5256 (1. szint) "enumerálás": rögzített mögöttes típusú enumerálás nem meghatározó deklarációja csak önálló deklarációként engedélyezett 17.2
C5258 (4. szint) Ehhez a 17.2-hez nincs szükség a "szimbólum" explicit rögzítésére
C5259 (4. szint) "specializált típus": az explicit specializációhoz "" 17,3-as szint szükségestemplate <>
C5262 (1. szint, hiba) Implicit átlépés van itt; hiányzik egy break utasítás? Akkor használható[[fallthrough]], ha egy break utasítás szándékosan hiányzik a 17.4-s esetek között
C5263 (4. szint) ideiglenes objektumon a "std::move" hívása megakadályozza a másolási elision 17.4-es
C5264 (4. szint) "változónév": a "const" változó nem használatos 17,4
C5266 (4. szint) A visszatérési típus "const" minősítőjének nincs hatása a 17.6-os értékre
C5267 (4. szint) a "típus" implicit másolási konstruktor/hozzárendelés-operátor definíciója elavult, mert felhasználó által biztosított hozzárendelés-operátorral/másolási konstruktorral rendelkezik 17.7

14.1 Ez a figyelmeztetés a Visual Studio 2015 1. frissítésétől érhető el.
14.3 Ez a figyelmeztetés a Visual Studio 2015 3. frissítésétől érhető el.
15.2 Ez a figyelmeztetés a Visual Studio 2017 15.2-es verziójától érhető el.
15.3 Ez a figyelmeztetés a Visual Studio 2017 15.3-s verziójától kezdve érhető el.
15.5 Ez a figyelmeztetés a Visual Studio 2017 15.5-ös verziójától kezdve érhető el.
15.7 Ez a figyelmeztetés a Visual Studio 2017 15.7-es verziójától érhető el.
15.8 Ez a figyelmeztetés a Visual Studio 2017 15.8-os verziójától kezdve érhető el.
16.0 Ez a figyelmeztetés a Visual Studio 2019 RTM-ben érhető el.
16.5 Ez a figyelmeztetés a Visual Studio 2019 16.5-ös verziójától érhető el.
16.7 Ez a figyelmeztetés a Visual Studio 2019 16.7-es verziójától kezdve érhető el.
16.10 Ez a figyelmeztetés a Visual Studio 2019 16.10-es verziójától érhető el.
16.11 Ez a figyelmeztetés a Visual Studio 2019 16.11-es verziójától kezdve érhető el.
17.0 Ez a figyelmeztetés a Visual Studio 2022 17.0-s verziójától kezdve érhető el.
17.1 Ez a figyelmeztetés a Visual Studio 2022 17.1-es verziójától érhető el.
17.2 Ez a figyelmeztetés a Visual Studio 2022 17.2-es verziójától érhető el.
17.3 Ez a figyelmeztetés a Visual Studio 2022 17.3-s verziójától érhető el.
17.4 Ez a figyelmeztetés a Visual Studio 2022 17.4-es verziójától kezdve érhető el.
17.5 Ez a figyelmeztetés a Visual Studio 2022 17.5-ös verziójától érhető el.
17.6 Ez a figyelmeztetés a Visual Studio 2022 17.6-os verziójától kezdve érhető el.
17.7 Ez a figyelmeztetés a Visual Studio 2022 17.7-es verziójától érhető el.
Dauer Ez a figyelmeztetés ki van kapcsolva, kivéve, ha a /permissive- fordító beállítás be van állítva.

Figyelmeztetések alapértelmezés szerint kikapcsolva a korábbi verziókban

Ez a figyelmeztetés alapértelmezés szerint ki volt kapcsolva a Visual Studio 2015 15.3-os verziójában, és engedélyezve lett a Visual Studio 2015 15.5-ös verziójában:

Figyelmeztetés Üzenet
C4768 __declspec attribútumok a csatolási specifikáció figyelmen kívül hagyása előtt

Ezek a figyelmeztetések alapértelmezés szerint ki voltak kapcsolva a fordító Visual Studio 2015 előtti verzióiban:

Figyelmeztetés Üzenet
C4302 (2. szint) "átalakítás": csonkolás "type1"-ből "type2"-ba
C4311 (1. szint) "változó": a mutató csonkolása a "típus" és a "típus" között
C4312 (1. szint) "művelet": átalakítás "type1"-ről "type2" nagyobb méretűre
C4319 (1. szint) "operátor": a "type1" nulla kiterjesztése a "type2" típus nagyobb méretére"

Ez a figyelmeztetés alapértelmezés szerint ki volt kapcsolva a fordító Visual Studio 2012 előtti verzióiban:

Figyelmeztetés Üzenet
C4431 (4. szint) hiányzó típusmeghatározó – int feltételezett. Megjegyzés: A C már nem támogatja az alapértelmezett intet

Lásd még

warning pragma