Standardmäßig deaktivierte Compilerwarnungen

Der Compiler unterstützt Warnungen, die standardmäßig deaktiviert sind, da die meisten Entwickler sie nicht hilfreich finden. In einigen Fällen warnen sie vor einer stilistischen Auswahl oder vor allgemeinen Idioms im älteren Code. Andere Warnungen beziehen sich auf die Verwendung einer Microsoft-Erweiterung auf die Sprache. Einige Warnungen weisen auf einen Bereich hin, in dem Programmierer häufig falsche Annahmen machen, was zu unerwartetem oder nicht definierten Verhalten führen kann. Wenn alle diese Warnungen aktiviert sind, werden einige dieser Warnungen möglicherweise mehrmals in Bibliotheksheadern angezeigt. Die C-Laufzeitbibliotheken und die C++-Standardbibliotheken sollen keine Warnungen nur auf Warnungsebene /W4ausgeben.

Standardmäßig deaktivierte Warnungen aktivieren

Sie können Warnungen aktivieren, die normalerweise standardmäßig deaktiviert sind, indem Sie eine der folgenden Optionen verwenden:

  • #pragma warning(default : warning_number )

    Die angegebene Warnung (warning_number) ist auf der Standardebene aktiviert. Dokumentation für die Warnung enthält die Standardebene der Warnung.

  • #pragma warning( : warning_level warning_number )

    Die angegebene Warnung (warning_number) ist auf der angegebenen Ebene (warning_level) aktiviert.

  • /Wall

    /Wall aktiviert alle Warnungen, die standardmäßig deaktiviert sind. Wenn Sie diese Option verwenden, können Sie einzelne Warnungen mithilfe der /wd Option deaktivieren.

  • /wLnnnn

    Diese Option aktiviert Warnung nnnn auf Ebene L.

Warnungen, die standardmäßig deaktiviert sind

Visual Studio 2015 und höhere Versionen

Die folgenden Warnungen sind in Visual Studio 2015 und höheren Versionen standardmäßig deaktiviert:

Warnung `Message`
C4061 (Ebene 4) Enumerator 'Identifier' in einem Switch der Enumeration 'Enumeration' wird nicht explizit von einer Groß-/Kleinschreibungsbezeichnung behandelt.
C4062 (Ebene 4) Der Enumerator "Identifier" in einem Enumerationswechsel wird nicht behandelt.
C4165 (Ebene 1) "HRESULT" wird in "bool" konvertiert; sind Sie sicher, dass dies der Gewünschte ist?
C4191 (Ebene 3) "operator": unsichere Konvertierung von "type_of_expression" in "type_required"
C4242 (Ebene 4) 'identifier': Konvertierung von 'type1' zu 'type2', Datenverlust ist möglich
C4254 (Ebene 4) "operator": Konvertierung von "type1" in "type2", mögliche Datenverluste
C4255 (Ebene 4) 'function': Kein Funktionsprototyp angegeben: '()' wird in '(void)' konvertiert
C4263 (Ebene 4) 'function': Memberfunktion überschreibt keine virtuelle Memberfunktion einer Basisklasse
C4264 (Ebene 1) 'virtual_function': Keine Außerkraftsetzung für virtuelle Memberfunktion aus der Basisklasse verfügbar; Funktion ist ausgeblendet.
C4265 (Ebene 3) "Klasse": Klasse verfügt über virtuelle Funktionen, aber Destruktor ist nicht virtuell
C4266 (Ebene 4) 'function': Keine Außerkraftsetzung für virtuelle Memberfunktion vom Basistyp'; Funktion ist ausgeblendet.
C4287 (Ebene 3) 'operator': Konflikt zwischen vorzeichenloser und negativer Konstante
C4289 (Ebene 4) nicht standardmäßige Erweiterung verwendet : 'var': In der Forschleife deklarierte Schleifensteuerungsvariable wird außerhalb des For-Loop-Bereichs verwendet.
C4296 (Ebene 4) 'operator': Ausdruck ist immer falsch.
C4339 (Ebene 4) 'type' : Die Verwendung eines nicht definierten Typs, der in CLR-Metadaten erkannt wurde . Die Verwendung dieses Typs kann zu einer Laufzeit-Ausnahme führen.
C4342 (Ebene 1) Verhaltensänderung: 'function' wird aufgerufen, in früheren Versionen wurde jedoch ein Memberoperator aufgerufen.
C4350 (Ebene 1) Verhaltensänderung: 'member1' wird anstelle von 'member2' aufgerufen
C4355 "this": Wird in der Basisliste für den Memberinitialisierer verwendet
C4365 (Ebene 4) "action": Konvertierung von "type_1" in "type_2", signiert/nicht signierte Übereinstimmung
C4370 (Ebene 3) Durch bessere Verpackung wurde das Klassenlayout geändert, das vorher eine andere Compilerversion hatte
C4371 (Ebene 3) 'Klassenname': Das Layout der Klasse wurde möglicherweise aufgrund einer besseren Verpackung des Members "member" von einer früheren Version des Compilers geändert.
C4388 (Ebene 4) Konflikt zwischen 'signed' und 'unsigned'
C4412 (Ebene 2) 'funktion': Funktionssignatur enthält typ 'type'; C++-Objekte sind unsicher, um zwischen reinem Code und gemischten oder nativen Objekten zu übergeben.
C4426 (Ebene 1) Optimierungskennzeichnungen, die nach dem Einschließen der Kopfzeile geändert wurden, können auf #pragma optimize() 14.1 zurückzuführen sein.
C4435 (Ebene 4) 'class1' : Das Objektlayout unter /vd2 ändert sich aufgrund der virtuellen Basis "Class2".
C4437 (Ebene 4) dynamic_cast von der virtuellen Basis "Class1" bis "Class2" können in einigen Kontexten fehlschlagen.
C4444 (Ebene 3) Die oberste Ebene "__unaligned" wird in diesem Kontext nicht implementiert.
C4464 (Ebene 4) Der relative Includepfad enthält "..".
C4471 (Ebene 4) Eine Vorwärtsdeklaration einer nicht bereichsbezogenen Aufzählung muss einen zugrunde liegenden Typ aufweisen (int angenommen) Perm
C4472 (Ebene 1) "Identifier" ist eine systemeigene Enumeration: Fügen Sie einen Zugriffsbezeichner (privat/öffentlich) hinzu, um eine verwaltete Enumeration zu deklarieren.
C4514 (Ebene 4) function“: Nicht referenzierte Inlinefunktion wurde entfernt
C4536 (Ebene 4) 'Typname': Der Typname überschreitet den Metadatengrenzwert von 'Limit'-Zeichen.
C4545 (Ebene 1) Ausdruck vor dem Komma wird als Funktion ausgewertet, der eine Argumentliste fehlt
C4546 (Ebene 1) Funktionsaufruf vor dem Komma ohne Argumentliste
C4547 (Ebene 1) operator“: Operator vor dem Komma hat keine Auswirkungen; Operator mit Nebeneffekten erwartet
C4548 (Ebene 1) Ausdruck vor dem Komma hat keine Auswirkung; es wurde ein Ausdruck mit Nebeneffekt erwartet
C4549 (Ebene 1) "operator1": Operator vor Komma hat keine Wirkung; haben Sie "operator2" beabsichtigt?
C4555 (Ebene 1) Der Ausdruck hat keine Auswirkungen; Ausdruck mit Nebeneffekten erwartet
C4557 (Ebene 3) “__assume“ enthält den Effekt “effect
C4571 (Ebene 4) Informational: Catch(...)-Semantik seit Visual C++ 7.1 geändert; Strukturierte Ausnahmen (SEH) werden nicht mehr abgefangen
C4574 (Ebene 4) "Bezeichner" ist als "0" definiert: Haben Sie "#if Bezeichner" verwendet?
C4577 (Ebene 1) "noexcept" wird ohne Ausnahmebehandlungsmodus verwendet. Die Beendigung bei Ausnahme wird nicht garantiert. Geben Sie /EHsc an.
C4582 (Ebene 4) "type": Konstruktor wird nicht implizit aufgerufen
C4583 (Ebene 4) "type": Destruktor wird nicht implizit aufgerufen
C4587 (Ebene 1) anonymous_structure“: Verhaltensänderung: Konstruktor wird nicht mehr implizit aufgerufen
C4588 (Ebene 1) anonymous_structure“: Verhaltensänderung: Destruktor wird nicht mehr implizit aufgerufen
C4596 (Ebene 4) "Bezeichner": unzulässiger qualifizierter Name in der Mitgliedsdeklaration 14.3 Perm
C4598 (Ebene 1 und Ebene 3) '#include "Header": Kopfzeilennummer in der vorkompilierten Kopfzeile stimmt nicht mit der aktuellen Kompilierung an dieser Position 14.3 überein.
C4599 (Ebene 3) 'Optionspfad': Die Befehlszeilenargumentnummer arg_number stimmt nicht mit der vorkompilierten Kopfzeile 14.3 überein.
C4605 (Ebene 1) '/Dmacro' wurde in der aktuellen Befehlszeile angegeben. Diese Angabe ist aber nicht beim Erstellen des vorkompilierten Headers erfolgt.
C4608 (Ebene 3) "union_member" wurde bereits von einem anderen Unionsmitglied in der Initialisierungsliste "union_member" perm initialisiert.
C4619 (Ebene 3) #pragma Warnung: Es gibt keine Warnnummer "Zahl"
C4623 (Ebene 4) 'Abgeleitete Klasse': Der Standardkonstruktor konnte nicht generiert werden, da auf einen Basisklassen-Standardkonstruktor nicht zugegriffen werden kann
C4625 (Ebene 4) 'Abgeleitete Klasse': Der Kopierkonstruktor konnte nicht generiert werden, da auf einen Basisklassen-Kopierkonstruktor nicht zugegriffen werden kann
C4626 (Ebene 4) 'Abgeleitete Klasse': Der Zuweisungsoperator konnte nicht generiert werden, da auf einen Basisklassen-Zuweisungsoperator nicht zugegriffen werden kann
C4628 (Ebene 1) 'digraphs' werden mit '-Ze' nicht unterstützt. Zeichensequenz 'digraph' wird nicht als alternatives Token für 'char' interpretiert
C4640 (Ebene 3) 'instanz': Das Erstellen eines lokalen statischen Objekts ist nicht threadsicher.
C4643 (Ebene 4) Die Weiterleitung mit Deklaration von 'identifier' im Namespace „std“ ist gemäß C++-Standard unzulässig. 15.8
C4647 (Ebene 3) Verhaltensänderung: __is_pod(type) hat in früheren Versionen einen anderen Wert.
C4654 (Ebene 4) Code, der vor der Aufnahme einer vorkompilierten Kopfzeile platziert wird, wird ignoriert. Fügen Sie Code zum vorkompilierten Header hinzu. 14.1
C4668 (Ebene 4) "Symbol" ist nicht als Präprozessormakro definiert und ersetzt durch "0" für "Direktiven"
C4682 (Ebene 4) 'symbol' : kein direktionales Parameter-Attribut angegeben, standardmäßig auf [in]
C4686 (Ebene 3) "benutzerdefinierter Typ": mögliche Verhaltensänderung, Änderung der UDT-Rückgabeaufrufkonvention
C4692 (Ebene 1) 'Funktion': Die Signatur eines nicht privaten Mitglieds enthält den privaten nativen Assemblytyp "native_type"
C4710 (Ebene 4) 'funktion': Funktion nicht inlined
C4738 (Ebene 3) Das 32-Bit-Gleitkommaergebnis wird im Speicher gespeichert. Möglicherweise kommt es zu einem Leistungsverlust
C4746 flüchtiger Zugriff auf 'expression' unterliegt der /volatile:<iso|ms>-Einstellung; verwenden Sie stattdessen die systeminternen __iso_volatile_load/store-Funktionen
C4749 (Ebene 4) bedingt unterstützt: Offsetof auf nicht standardmäßigen Layouttyp 'type' angewendet
C4767 (Ebene 4) Der Abschnittsname "Symbol" ist länger als 8 Zeichen und wird vom Linker abgeschnitten.
C4774 (Ebene 4) 'string' : Die in Argument number erwartete Formatzeichenfolge ist kein Zeichenfolgenliteral.
C4777 (Ebene 4) 'function': Formatzeichenfolge 'string' erfordert ein Argument vom Typ 'type1', aber variadisches Argument weist den Typ 'type2' auf.
C4786 (Ebene 3) 'symbol' : Objektname wurde in den Debuginformationen auf 'Zahl' Zeichen abgeschnitten.
C4800 (Ebene 4) Implizite Konvertierung von 'type' in bool. Mögliche Informationsverluste 16.0
C4820 (Ebene 4) 'bytes' Bytes Abstand nach dem Konstrukt 'member_name'
C4822 (Ebene 1) "member": Lokale Klassenmememmfunktion verfügt nicht über einen Textkörper.
C4826 (Ebene 2) Die Konvertierung von 'type1' zu 'type2' ist signaturerweitert. Dies kann zu unerwartetem Laufzeitverhalten führen
C4837 (Ebene 4) Trigraph erkannt: "??character" ersetzt durch "character"
C4841 (Ebene 4) nicht standardmäßige Erweiterung verwendet: Verbundelement-Kennzeichner, der im Offsetof verwendet wird
C4842 (Ebene 4) Das Ergebnis von "offsetof", das auf einen Typ angewendet wird, der mehrere Vererbung verwendet, ist nicht garantiert, dass es zwischen Compilerversionen konsistent ist.
C4866 (Ebene 4) Der Compiler "file(line-number)" erzwingt möglicherweise nicht die Reihenfolge der Links-nach-rechts-Auswertung für den Aufruf an den Operator.
C4868 (Ebene 4) Der Compiler "file(line_number)" erzwingt möglicherweise nicht die Reihenfolge der Links-nach-rechts-Auswertung in geschweifter Initialisierungsliste
C4905 (Ebene 1) Breites Zeichenfolgenliteral umgewandelt zu "LPSTR"
C4906 (Ebene 1) Zeichenfolgenliteral umgewandelt zu "LPWSTR"
C4917 (Ebene 1) 'deklarator': Eine GUID kann nur einer Klasse, Schnittstelle oder einem Namespace zugeordnet werden.
C4928 (Ebene 1) Unzulässige Kopierinitialisierung. Mehrere benutzerdefinierte Konvertierungen wurden implizit übernommen
C4931 (Ebene 4) Es wird angenommen, dass die Typbibliothek für number-Bit-Pointer erstellt wurde
C4946 (Ebene 1) reinterpret_cast zwischen verwandten Klassen verwendet: "Klasse1" und "Klasse2"
C4962 'Funktion': Profilgeführte Optimierungen sind deaktiviert, da Optimierungen dazu geführt haben, dass Profildaten inkonsistent wurden.
C4986 (Ebene 4) 'symbol': Ausnahmespezifikation stimmt nicht mit der vorherigen Deklaration überein.
C4987 (Ebene 4) Es wurde eine nicht standardmäßige Erweiterung verwendet: 'throw (...)'
C4988 (Ebene 4) 'symbol': Variable außerhalb des Klassen-/Funktionsbereichs deklariert
C5022 'type': mehrere Bewegungskonstruktoren angegeben
C5023 'type': mehrere Bewegungszuweisungsoperatoren angegeben
C5024 (Ebene 4) 'type': Bewegungskonstruktor wurde implizit als gelöscht definiert
C5025 (Ebene 4) 'type': Der Operator zum Verschieben einer Zuweisung wurde implizit als gelöscht definiert.
C5026 (Ebene 1 und Ebene 4) 'type': Bewegungskonstruktor wurde implizit als gelöscht definiert
C5027 (Ebene 1 und Ebene 4) 'type': Der Operator zum Verschieben einer Zuweisung wurde implizit als gelöscht definiert.
C5029 (Ebene 4) Es wird eine nicht standardmäßige Extension verwendet: Die Ausrichtungsattribute in C++ gelten nur für Variablen, Datenmember und Tagtypen.
C5031 (Ebene 4) #pragma Warnung(Pop): Wahrscheinlicher Konflikt, Warnzustand wird in unterschiedlicher Datei 14.1 verschoben.
C5032 (Ebene 4) #pragma Warnung(Push) ohne entsprechende #pragma Warnung(pop) 14.1 erkannt

Visual Studio 2017 und höhere Versionen

Die folgenden Warnungen sind in Visual Studio 2017 und höheren Versionen standardmäßig deaktiviert:

Warnung `Message`
C5034 Die Verwendung systeminterner "systeminterner" bewirkt, dass Funktionsfunktionsname als Gastcode 15.3 kompiliert wird.
C5035 Die Verwendung des Features "Feature" bewirkt, dass Funktionsfunktionsname als Gastcode 15.3 kompiliert wird.
C5036 (Ebene 1) varargs-Funktionszeigerkonvertierung beim Kompilieren mit /hybrid:x86arm64 'type1' in 'type2' 15.3
C5038 (Ebene 4) "member1" wird nach dem Datenmitglied "member2" 15.3 initialisiert.
C5039 (Ebene 4) 'Function': Zeiger oder Verweis auf potenziell auslösende Funktion, die an die externe C-Funktion übergeben wird, unter -EHc. Nicht definiertes Verhalten kann auftreten, wenn diese Funktion eine Ausnahme auslöst. 15.5
C5041 (Ebene 4) 'member-name': Out-of-line definition for constexpr static data member is not needed and is deprecated in C++17. 15.2
C5042 (Ebene 3) 'function': Funktionsdeklarationen im Blockbereich können in C++ nicht inline angegeben werden; Entfernen des Inlinebezeichners 15.5
C5045 Compiler fügt spectre mitigation for memory load ein, wenn /Qspectre switch specified 15.7

Visual Studio 2019 und höhere Versionen

Die folgenden Warnungen sind in Visual Studio 2019 und höheren Versionen standardmäßig deaktiviert:

Warnung `Message`
C5052 (Ebene 3) Das Schlüsselwort "Schlüsselwortname" wurde in C++ -Version eingeführt und erfordert die Verwendung der Befehlszeilenoption "Option" 16.1.
C5204 (Ebene 3) Eine Klasse mit virtuellen Funktionen weist einen nicht virtuellen trivialen Destruktor auf. 16.5
C5214 (Ebene 4) Das Anwenden eines Schlüsselworts auf einen Operanden mit einem veränderlich qualifizierten Typ ist in C++20 16.7 veraltet.
C5215 (Ebene 4) Ein Funktionsparameter mit einem veränderlich qualifizierten Typ ist in C++20 16.7 veraltet.
C5216 (Ebene 4) "Rückgabetyp" ein veränderlich qualifizierter Rückgabetyp ist in C++20 16.7 veraltet.
C5217 (Ebene 4) Eine strukturierte Bindungsdeklaration, die veränderliche Deklaration enthält, ist in C++20 16.7 veraltet.
C5219 (Ebene 2) implizite Konvertierung von 'type-1' in 'type-2', mögliche Datenverluste 16.7
C5220 (Ebene 4) "member": Ein nicht statisches Datenelement mit einem veränderlich qualifizierten Typ impliziert nicht mehr, dass
Compiler generierte Copy/Move-Konstruktoren und Copy/Move-Zuordnungsoperatoren sind nicht trivial 16.7
C5233 (Ebene 4) Der explizite Lambda-Erfassungsbezeichner wird 16.10 nicht verwendet.
C5240 (Ebene 4) 'Attributname': Das Attribut wird an dieser syntaktischen Position 16.10 ignoriert.
C5243 (Ebene 1) 'Type-name': Die Verwendung unvollständiger Klasse "Klassenname" kann aufgrund der ABI-Einschränkung 16.10 zu einer möglichen Verletzung einer Definitionsregel führen.
C5245 (Ebene 4) function“: Eine nicht referenzierte Funktion mit interner Verknüpfung wurde entfernt.
C5246 (Ebene 1) 'member': Die Initialisierung eines Unterobjekts sollte in geschweifte Klammern 16.10 eingeschlossen werden.
C5247 (Ebene 1) Der Abschnitt "Abschnittsname" ist für die dynamische C++-Initialisierung reserviert. Das manuelle Erstellen des Abschnitts beeinträchtigt die dynamische C++-Initialisierung und kann zu nicht definierten Verhalten 16.11 führen.
C5248 (Ebene 1) Der Abschnitt "Abschnittsname" ist für die dynamische C++-Initialisierung reserviert. Variable, die manuell in den Abschnitt eingefügt wird, kann optimiert werden, und ihre Reihenfolge relativ zu compilergenerierten dynamischen Initialisierern ist nicht angegeben 16.11

Visual Studio 2022 und höhere Versionen

Die folgenden Warnungen sind in Visual Studio 2022 und höheren Versionen standardmäßig deaktiviert:

Warnung `Message`
C5249 (Ebene 1) bitfeld“ vom Typ „enumeration_name“ weist benannte Enumeratoren mit Werten auf, die nicht in der angegebenen Bit-Feldbreite von „bitfield_width“ dargestellt werden können. 17.0
C5250 (Ebene 3) function_name“: Intrinsische Funktion nicht deklariert. 17.0
C5251 (Ebene 4) Segmentname geändert, nachdem Kopfzeile 17.1 eingeschlossen wurde
C5254 (Ebene 4) sprachfeature 'terse static assert' erfordert Compilerflagge '/std:c++17' 17.1
C5256 (Ebene 1) 'Enumeration': Eine nicht definierende Deklaration einer Aufzählung mit einem festen zugrunde liegenden Typ ist nur als eigenständige Deklaration 17.2 zulässig.
C5258 (Ebene 4) Für diese Verwendung 17.2 ist keine explizite Erfassung von "Symbol" erforderlich.
C5259 (Ebene 4) 'specialized-type': Explizite Spezialisierung erfordert 'template <>' 17.3
C5262 (Ebene 1, Fehler) Hier erfolgt ein impliziter Fall-Through. Fehlt eine break-Anweisung? Verwenden, [[fallthrough]] wenn eine break Anweisung zwischen den Fällen 17.4 absichtlich weggelassen wird
C5263 (Ebene 4) Das Aufrufen von "std::move" für ein temporäres Objekt verhindert das Kopieren von Elision 17.4
C5264 (Ebene 4) 'Variable-Name': "Const"-Variable wird nicht 17.4 verwendet .
C5266 (Ebene 4) Der Qualifizierer "Const" für den Rückgabetyp hat keine Auswirkung 17,6.
C5267 (Ebene 4) Definition des impliziten Kopierkonstruktors/Zuordnungsoperators für "type" ist veraltet, da er über einen vom Benutzer bereitgestellten Zuordnungsoperator/Kopierkonstruktor 17.7 verfügt.

14.1 Diese Warnung ist ab Visual Studio 2015 Update 1 verfügbar.
14.3 Diese Warnung ist ab Visual Studio 2015 Update 3 verfügbar.
15.2 Diese Warnung ist ab Visual Studio 2017, Version 15.2, verfügbar.
15.3 Diese Warnung ist ab Visual Studio 2017, Version 15.3, verfügbar.
15.5 Diese Warnung ist ab Visual Studio 2017, Version 15.5, verfügbar.
15.7 Diese Warnung ist ab Visual Studio 2017, Version 15.7, verfügbar.
15.8 Diese Warnung ist ab Visual Studio 2017, Version 15.8, verfügbar.
16.0 Diese Warnung ist ab Visual Studio 2019 RTM verfügbar.
16.5 Diese Warnung ist ab Visual Studio 2019, Version 16.5, verfügbar.
16.7 Diese Warnung ist ab Visual Studio 2019, Version 16.7, verfügbar.
16.10 Diese Warnung ist ab Visual Studio 2019, Version 16.10, verfügbar.
16.11 Diese Warnung ist ab Visual Studio 2019, Version 16.11, verfügbar.
17.0 Diese Warnung ist ab Visual Studio 2022, Version 17.0, verfügbar.
17.1 Diese Warnung ist ab Visual Studio 2022, Version 17.1, verfügbar.
17.2 Diese Warnung ist ab Visual Studio 2022, Version 17.2, verfügbar.
17.3 Diese Warnung ist ab Visual Studio 2022, Version 17.3, verfügbar.
17.4 Diese Warnung ist ab Visual Studio 2022, Version 17.4, verfügbar.
17.5 Diese Warnung ist ab Visual Studio 2022, Version 17.5, verfügbar.
17.6 Diese Warnung ist ab Visual Studio 2022, Version 17.6, verfügbar.
17.7 Diese Warnung ist ab Visual Studio 2022, Version 17.7, verfügbar.
Perm Diese Warnung ist deaktiviert, es sei denn, die /permissive- Compileroption ist festgelegt.

Warnungen in früheren Versionen standardmäßig deaktiviert

Diese Warnung war in Visual Studio 2015, Version 15.3, standardmäßig deaktiviert und in Visual Studio 2015, Version 15.5, aktiviert:

Warnung `Message`
C4768 __declspec Attribute vor der Verknüpfungsspezifikation werden ignoriert.

Diese Warnungen waren in Versionen des Compilers vor Visual Studio 2015 standardmäßig deaktiviert:

Warnung `Message`
C4302 (Ebene 2) 'conversion': Verkürzung von 'type1' zu 'type2'
C4311 (Ebene 1) 'Variable': Zeigerabkürzung von 'type' auf 'type'
C4312 (Ebene 1) 'operation': Konvertierung von 'type1' zu größerem 'type2'
C4319 (Ebene 1) "operator": Null, die 'type1' auf 'type2' mit größerer Größe erweitert

Diese Warnung war in Versionen des Compilers vor Visual Studio 2012 standardmäßig deaktiviert:

Warnung `Message`
C4431 (Ebene 4) Fehlender Typspezifizierer - int wird angenommen. Hinweis: default-int wird von C++ nicht unterstützt

Siehe auch

warning-Pragma