C/C++-Eigenschaftenseiten

Die folgenden Eigenschaftenseiten finden Sie unter Projekt>Eigenschaften>Konfigurationseigenschaften>C/C++:

Allgemeine C/C++-Eigenschaften

Zusätzliche Includeverzeichnisse

Gibt mindestens ein Verzeichnis an, das dem Include-Pfad hinzugefügt werden soll. Trennen Sie Verzeichnisse mit Semikolons (;), wenn mehrere Vorhanden sind. Legt die /I Compileroption (Zusätzliche Includeverzeichnisse) fest.

Zusätzliche #using-Verzeichnisse

Gibt ein oder mehrere Verzeichnisse an, die durchsucht werden sollen, um Namen, die an eine #using-Direktive übergeben werden, aufzulösen. Trennen Sie Verzeichnisse durch Semikolons (;), wenn Sie mehrere hinzufügen. Legt die /AI Compileroption fest.

Weitere BMI-Verzeichnisse

Gibt ein oder mehrere Verzeichnisse an, die durchsucht werden sollen, um Namen, die an eine import-Direktive übergeben werden, aufzulösen. Trennen Sie Verzeichnisse durch Semikolons (;), wenn Sie mehrere hinzufügen. Legt die /ifcSearchDir[path] Compileroption fest.

Zusätzliche Modulabhängigkeiten

Gibt ein oder mehrere Module an, die verwendet werden sollen, um Namen, die an eine import-Direktive übergeben werden, aufzulösen. Trennen Sie Verzeichnisse durch Semikolons (;), wenn Sie mehrere hinzufügen. Legt die /reference Compileroption fest.

Zusätzliche Kopfzeileneinheitsabhängigkeiten

Gibt eine oder mehrere Headereinheiten an, die verwendet werden sollen, um Namen, die an eine import-Headerdirektive übergeben werden, aufzulösen. Trennen Sie Verzeichnisse durch Semikolons (;), wenn Sie mehrere hinzufügen. Legt die /headerUnit Compileroption fest.

Scannen von Quellen für Modulabhängigkeiten

Wenn diese Eigenschaft auf "Ja" festgelegt ist, überprüft der Compiler nicht nur Modulschnittstellen- und Headereinheitsquellen, alle C++-Quellen, auf Abhängigkeiten von Modul- und Headereinheiten. Das Buildsystem erstellt das vollständige Abhängigkeitsdiagramm, wodurch sichergestellt wird, dass alle importierten Module und Headereinheiten erstellt werden, bevor die Dateien kompiliert werden, die von ihnen abhängig sind. Wenn Scan Sources for Module Dependencies und Translate Includes to Imports beide auf Ja festgelegt sind, wird jede Headerdatei, die in einer header-units.json-Datei im selben Verzeichnis wie die Headerdatei angegeben ist, in eine Header-Einheit kompiliert.

Dateien mit der Erweiterung .ixxund Dateien, die ihre Dateieigenschaften>C/C++>Advanced>Compile As auf Compile as C++ Header Unit (/exportHeader) festgelegt haben, werden immer gescannt.

Dateien mit der Erweiterung .ixx, und Dateien, die ihre Dateieigenschaften>C/C++>Compile As Eigenschaft auf Compile as C++ Header Unit (/exportHeader) festgelegt haben, werden immer gescannt.

Includes in Importe umwandeln

Wenn diese Eigenschaft auf "Ja" festgelegt ist, behandelt der Compiler eine #include Direktive als import Direktive, wenn bestimmte Bedingungen erfüllt sind: Die Headerdatei wird in einer header-units.json Datei im selben Verzeichnis angegeben, und eine kompilierte Kopfzeileneinheit (eine .ifc Datei) ist für die Headerdatei verfügbar. Andernfalls wird die Headerdatei als normal #include behandelt. Die header-units.json Datei wird verwendet, um Kopfzeileneinheiten für jede #include ohne Symbolduplizierung zu erstellen. Wenn Translate Includes to Imports und Scan Sources for Module Dependencies beide auf Ja gesetzt sind, findet der Compiler automatisch alle Headerdateien, die zu Headereinheiten kompiliert werden können. Diese Eigenschaft legt die /translateInclude Compileroption fest.

Debuginformationsformat

Gibt den Typ der Debuginformationen an, die vom Compiler generiert werden. Für diese Eigenschaft sind kompatible Linkereinstellungen erforderlich. ** Legt Compileroptionen /Z7, /Zi, /ZI (Debuginformationsformat) fest.

Optionen

  • None (None) – Erzeugt keine Debuginformationen, sodass die Kompilierung möglicherweise schneller ist.
  • C7-kompatible (OldStyle) – Erzeugt Objektdateien, die vollständige symbolische Debuginformationen enthalten. Es wird keine PDB-Datei erstellt.
  • Programmdatenbank (ProgramDatabase) – Erzeugt eine Programmdatenbank (PDB), die Typinformationen und symbolische Debuginformationen für die Verwendung mit dem Debugger enthält. Die symbolischen Debuginformationen umfassen die Namen und Typen von Variablen und Funktionen sowie Zeilennummern.
  • Programmdatenbank für Bearbeitung und Weiter (EditAndContinue) – Erzeugt eine Programmdatenbank, wie zuvor beschrieben, in einem Format, das das Feature "Bearbeiten" und "Weiter" unterstützt.

Unterstützung des Nur-Meinen-Code-Debuggings

Fügt Unterstützungscode zum Aktivieren des Just My Code-Debuggings in dieser Kompilierungseinheit hinzu. Legt fest /JMC.

Unterstützen des dynamischen Debuggens von C++

(Vorschau) Legt das Compilerflagge /dynamicdeopt fest, um das dynamische Debuggen von C++ zu aktivieren. Setzen Sie nicht optimierte Haltepunkte, und führen Sie mit der bedarfsgesteuerten Funktionsdeoptimierung an beliebiger Stelle einen Schritt aus. Verwenden Sie diesen Modus zum Debuggen von optimiertem Code.

Unterstützung für die Common Language Runtime

Verwenden Sie den .NET-Laufzeitdienst. Dieser Schalter ist mit einigen anderen Schaltern nicht kompatibel. Weitere Informationen finden Sie in der Dokumentation zur /clr Familie der Schalter.

Optionen

  • Keine Common Language RunTime-Unterstützung – keine Common Language Runtime-Unterstützung.
  • Common Language RunTime Support – Erstellt Metadaten für Ihre Anwendung, die von anderen CLR-Anwendungen genutzt werden können. Ermöglicht Ihrer Anwendung auch die Nutzung von Typen und Daten in den Metadaten anderer CLR-Komponenten.
  • Reine MSIL Common Language RunTime-Unterstützung - Erzeugt eine nur MSIL-Ausgabedatei ohne nativen ausführbaren Code, obwohl sie systemeigene Typen enthalten kann, die in MSIL kompiliert wurden.
  • Sichere MSIL Common Language RunTime-Unterstützung – Erzeugt eine reine MSIL-Datei (kein nativer ausführbarer Code) und eine überprüfbare Ausgabedatei.

Verwenden Sie die Windows-Runtime-Erweiterung

Nutzen Sie die Spracherweiterungen für die Windows-Runtime. Legt fest /ZW.

Startbanner unterdrücken

Unterdrückt die Anzeige des Anmeldebanners beim Start des Compilers und die Anzeige von Informationsmeldungen während der Kompilierung.

Warnstufe

Wählen Sie aus, wie streng der Compiler bei Codefehlern sein soll. Legt fest /W0 - /W4.

Optionen

  • Alle Warnungen deaktivieren – Stufe 0 deaktiviert alle Warnungen.
  • Stufe 1 – Ebene 1 zeigt schwere Warnungen an. Ebene 1 ist die Standardwarnstufe in der Befehlszeile.
  • Stufe 2 – Ebene 2 zeigt alle Warnungen der Ebene 1 und Warnungen an, die weniger schwerwiegend als Stufe 1 sind.
  • Level3 – Ebene 3 zeigt alle Warnungen der Ebene 2 und alle anderen Warnungen an, die für Produktionszwecke empfohlen werden.
  • Level4 – Ebene 4 zeigt alle Warnungen der Ebene 3 und Informationswarnungen an, die in den meisten Fällen sicher ignoriert werden können.
  • EnableAllWarnings – Aktiviert alle Warnungen, einschließlich der standardmäßig deaktivierten Warnungen.

Warnungen als Fehler behandeln

Behandelt Compilerwarnungen als Fehler. Für ein neues Projekt ist es möglicherweise am besten, in jeder Kompilierung zu verwenden /WX . Beheben Sie alle Warnungen, um schwer zu findende Codefehler zu minimieren.

Version der Warnung

Ausblenden von Warnungen, die nach einer bestimmten Version des Compilers eingeführt wurden. Legt fest /Wv:xx[.yy[.zzzzz]].

Diagnoseformat

Ermöglicht umfassende Diagnosefunktionen mit Spalteninformationen und Quellkontext in Diagnosemeldungen.

Optionen

  • Caret – Stellt Spalteninformationen in der Diagnosenachricht bereit. Gibt auch die relevante Zeile des Quellcodes mit einem Caret aus, der die problematische Spalte angibt.
  • Spalteninformationen – Gibt zusätzlich die Spaltennummer in der Zeile an, in der die Diagnose ausgestellt wird, falls zutreffend.
  • Klassisch – Gibt nur die vorherigen, präzisen Diagnosemeldungen mit der Zeilennummer aus.

SDL-Prüfungen

Zusätzliche von SDL (Security Development Lifecycle) empfohlene Überprüfungen. Umfasst die Aktivierung zusätzlicher Funktionen für die sichere Codegenerierung sowie das Behandeln zusätzlicher sicherheitsrelevanter Warnungen als Fehler. Sätze /sdl, /sdl-.

Kompilierung mit mehreren Prozessoren

Aktivieren Sie die Multiprozessorkompilierung. Legt die /MP Compileroption fest.

AddressSanitizer aktivieren

Kompiliert und verknüpft das Programm mit der AddressSanitizer-Instrumentierung. Diese Eigenschaft unterstützt derzeit x86- und x64-Zielbuilds. Legt die /fsanitize Compileroption fest.

Aktivieren der Fuzzerunterstützung (Experimental)

Kompiliert Programme mit dem Fuzzer. Aktivieren Sie AddressSanitizer für optimale Ergebnisse. Derzeit für x86- und x64-Builds verfügbar. Legt fest /fsanitize=fuzzer.

C/C++-Optimierungseigenschaften

Optimierung

Wählen Sie eine Option für die Codeoptimierung aus. Wählen Sie "Benutzerdefiniert" aus, um bestimmte Optimierungsoptionen zu verwenden. Legt /Od, /O1, /O2 fest.

Optionen

  • Benutzerdefiniert: Benutzerdefinierte Optimierung
  • Deaktiviert: Deaktivieren der Optimierung.
  • Maximale Optimierung (Favor Size) - entspricht /Os /Oy /Ob2 /Gs /GF /Gy.
  • Maximale Optimierung (Favor Speed) - entspricht /Oi /Ot /Oy /Ob2 /Gs /GF /Gy.
  • Optimierungen (Favor Speed) - entspricht /Oi /Ot /Oy /Ob2.

Inlinefunktionserweiterung

Wählen Sie den Grad der Erweiterung von Inline-Funktionen für den Build aus. Legt fest /Ob.

Optionen

  • Standard
  • Deaktiviert – Deaktiviert die Inlineerweiterung, die standardmäßig aktiviert ist.
  • Nur __inline – Erweitert nur Funktionen, die als inline, __forceinline oder __inline markiert sind. Oder in einer C++-Memberfunktion, die in einer Klassendeklaration definiert ist.
  • Any Suitable - Erweitert Funktionen, die als inline oder __inline markiert sind, sowie jede andere Funktion, die der Compiler auswählt. (Die Erweiterung erfolgt nach Ermessen des Compilers. Diese compilergewählte Erweiterung wird häufig als autoinlining bezeichnet.)

Systeminterne Funktionen aktivieren

Aktiviert systeminterne Funktionen. Die Verwendung systeminterner Funktionen generiert schnelleren, aber möglicherweise größeren Code. Legt fest /Oi.

Bevorzugte Größe oder Geschwindigkeit

Ob Codegröße oder Codegeschwindigkeit bevorzugt werden soll. Global Optimization muss aktiviert sein. Sätze /Ot, /Os.

Optionen

  • Kleincode bevorzugen – Minimiert die Größe von EXEs und DLLs, indem der Compiler angewiesen wird, die Größe gegenüber der Geschwindigkeit zu bevorzugen.
  • Schnellen Code bevorzugen – Maximiert die Geschwindigkeit von EXEs und DLLs, indem der Compiler angewiesen wird, die Geschwindigkeit gegenüber der Größe zu bevorzugen. (Dieser Wert ist der Standardwert, wenn Optimierungen aktiviert sind.)
  • Keine - Keine Größen- und Geschwindigkeitsoptimierung.

Rahmenzeiger weglassen

Unterdrückt die Erstellung von Frame-Pointern im Aufrufstapel.

Aktivieren von glasfasersicheren Optimierungen

Ermöglicht glasfasersichere Optimierungen für Anwendungen, die Fasern für den Zugriff auf threadlokalen Speicher verwenden. Legt fest /GT.

Optimierung des ganzen Programms

Ermöglicht modulübergreifende Optimierungen durch Verzögern der Codegenerierung zur Verknüpfungszeit. Erfordert die Linkeroption Linkzeitcodegenerierung. Legt fest /GL.

C/C++-Präprozessoreigenschaften

Präprozessordefinitionen

Definiert Vorverarbeitungssymbole für Ihre Quelldatei.

Präprozessordefinitionen aufheben

Gibt mindestens eine aufgehobene Präprozessordefinition an. Legt fest /U.

Alle Präprozessordefinitionen aufheben

Entfernt alle zuvor definierten Präprozessor-Definitionen. Legt fest /u.

Standard-Inkludierungspfade ignorieren

Verhindert, dass der Compiler nach Eingeschlossenen Dateien in Verzeichnissen sucht, die in den INCLUDE-Umgebungsvariablen angegeben sind.

Vorverarbeitung in eine Datei

Verarbeitet C- und C++-Quelldateien und schreibt die vorverarbeitete Ausgabe in eine Datei. Diese Option unterdrückt die Kompilierung und produziert keine .obj Datei.

Unterdrücken der Zeilennummern bei der Vorverarbeitung

Vorverarbeitung ohne Einsatz von #line Direktiven (Anweisungen).

Kommentare beibehalten

Aktivieren Sie diese Option, um C- und C++-Quellkommentare (// und /* ... */) in .i Dateien und anderen Vorprozessorausgaben beizubehalten. Der Präprozessor entfernt standardmäßig Kommentare.

Erfordert das Festlegen mindestens einer der Vorverarbeitungsoptionen . Legt fest /C.

Verwenden von Standardkonformierungsvorprozessoren

Verwenden Sie einen standardkonformen Präprozessor (/Zc:preprocessor). Derzeit impliziert von /std:c11 und späteren Versionen. Um den Legacy-Präprozessor zu verwenden, legen Sie diese Eigenschaft auf "Nein" fest.

C/C++-Codegenerierungseigenschaften

Aktivieren von Zeichenfolgenpooling

Aktivieren Sie diese Eigenschaft, um Zeichenfolgenpooling zu aktivieren, das identische Zeichenfolgen im kompilierten Programm zu einer einzigen schreibgeschützten Kopie zusammenfasst. Dies kann zu kleineren Programmen führen. /O1, /O2und /ZI legen Sie die /GF Option automatisch fest.

Minimale Neuerstellung aktivieren

Ermöglicht eine minimale Neuerstellung, die bestimmt, ob C++-Quelldateien, die Headerdateien (H) enthalten, neu kompiliert werden sollen, die geänderte C++-Klassendefinitionen enthalten.

C++-Ausnahmen aktivieren

Gibt das Ausnahmebehandlungsmodell an, das vom Compiler verwendet wird.

Optionen

  • Ja mit SEH-Ausnahmen – Das Ausnahmebehandlungsmodell, das asynchrone (strukturierte) und synchrone (C++)-Ausnahmen abfangen. Legt fest /EHa.
  • Ja – Das Ausnahmebehandlungsmodell, das nur C++-Ausnahmen abfangen und den Compiler so konfiguriert, dass davon ausgegangen wird, dass extern "C" Funktionen niemals eine C++-Ausnahme auslösen. Legt fest /EHsc.
  • Ja mit externen C-Funktionen – Das Ausnahmebehandlungsmodell, das nur C++-Ausnahmen abfangen und den Compiler so konfiguriert, dass davon ausgegangen wird, dass extern "C" Funktionen eine Ausnahme auslösen. Legt fest /EHs.
  • Nein – Keine Ausnahmebehandlung.

Kleinere Typüberprüfung

Aktiviert die Überprüfung auf Konvertierung in kleinere Typen. Nicht kompatibel mit einem anderen Optimierungstyp als Debug. Legt fest /RTCc.

Grundlegende Laufzeitüberprüfungen

Aktiviert grundlegende Laufzeitfehlerprüfungen. Nicht kompatibel mit einem anderen Optimierungstyp als Debug. Legt /RTCs, /RTC1, /RTCu fest.

Optionen

  • Stack Frames – Aktiviert die Laufzeitfehlerprüfung für Stack-Frames.
  • Nicht initialisierte Variablen – Meldet, wenn eine Variable verwendet wird, ohne initialisiert zu werden.
  • Beide (/RTC1, gleichw. mit /RTCsu) – Äquivalent von /RTCsu.
  • Standard : Standardlaufzeitüberprüfungen .

Laufzeitbibliothek

Gibt eine Laufzeitbibliothek zum Verknüpfen an. Sets /MT, /MD, /MTd, /MDd.

Optionen

  • Multithreaded – Bewirkt, dass Ihre Anwendung die statische Multithreadversion der Laufzeitbibliothek verwendet.
  • Multithread-Debug - Definiert _DEBUG und _MT. Diese Option bewirkt außerdem, dass der Compiler den Bibliotheksnamen LIBCMTD.lib in die Datei .obj einträgt, sodass der Linker LIBCMTD.lib zum Auflösen externer Symbole verwendet.
  • Multithread-DLL - Bewirkt, dass Ihre Anwendung die DLL-spezifische, Multithread-Version der Laufzeitbibliothek verwendet. Definiert _MT und _DLL und bewirkt, dass der Compiler den Bibliotheksnamen MSVCRT.lib in die .obj-Datei einfügt.
  • Multithreaded Debug DLL - Definiert _DEBUG, _MTund _DLL bewirkt, dass Ihre Anwendung die Debug-, DLL-spezifische, Multithread-Version der Laufzeitbibliothek verwendet. Er bewirkt außerdem, dass der Compiler den Bibliotheksnamen MSVCRTD.lib in die .obj Datei eingibt.

Strukturmemberausrichtung

Gibt 1-, 2-, 4-, 8- oder 16-Byte-Begrenzungen für die Ausrichtung der Strukturmember an. Legt fest /Zp.

Optionen

  • 1 Byte - Packt Strukturen auf Ein-Byte-Grenzen. Wie in /Zp.
  • 2 Bytes – Packt Strukturen an Zwei-Byte-Grenzen.
  • 4 Bytes – Packt Strukturen an vier Bytegrenzen.
  • 8 Bytes – Packt Strukturen auf acht Byte-Grenzen (Standard).
  • 16 Byte - Packt Strukturen an 16-Byte-Grenzen.
  • Standard – Standardausrichtungseinstellungen .

Gibt die Grenzen von 1, 2, 4 oder 8 Byte für die Ausrichtung von Strukturmitgliedern an. Legt fest /Zp.

Optionen

  • 1 Byte - Packt Strukturen auf Ein-Byte-Grenzen. Wie in /Zp.
  • 2 Bytes – Packt Strukturen an Zwei-Byte-Grenzen.
  • 4 Bytes – Packt Strukturen an vier Bytegrenzen.
  • 8 Bytes – Packt Strukturen auf acht Byte-Grenzen (Standard).
  • Standard – Standardausrichtungseinstellungen .

Sicherheitsüberprüfung

Hilft beim Erkennen von Stapelpufferüberläufen, die Angreifer nutzen können, um Ihre Anwendung zu kompromittieren.

Optionen

  • Sicherheitsüberprüfung deaktivieren - Setzt /GS-.
  • Sicherheitsprüfung aktivieren – Legt /GS fest.

Control Flow Guard

Hilft beim Erkennen von Versuchen, an illegale Codeblöcke zu disponieren.

Optionen

  • Ja – Steuerungsflussschutz aktivieren. Legt fest /guard:cf.
  • Nein

Funktionslevel-Linking aktivieren

Ermöglicht dem Compiler, einzelne Funktionen in Form von kompilierten Funktionen (COMDATs) zu kompilieren. Erforderlich für das Bearbeiten und Fortsetzen der Arbeit. Legt fest /Gy.

Parallele Codegenerierung aktivieren

Ermöglicht dem Compiler, für Schleifen, die mit #pragma loop(hint_parallel[(n)]) gekennzeichnet sind, parallelen Code zu generieren, wenn die Optimierung aktiviert ist.

Erweiterten Befehlssatz aktivieren

Aktivieren Sie die Verwendung von Anweisungen auf Prozessoren, die erweiterte Anweisungssätze unterstützen. Zum Beispiel die SSE-, SSE2-, AVX- und AVX2-Erweiterungen für IA-32 sowie die AVX- und AVX2-Erweiterungen für x64. /arch:SSE ist nur für x86-Builds verfügbar. /arch:SSE2 ist für x86- und x64-Builds verfügbar und ist die Standardeinstellung für beide Architekturen. Die Verwendung erweiterter Anweisungen kann mit /arch:IA32deaktiviert werden. Weitere Informationen finden Sie unter/arch (x86), /arch (x64), /arch (ARM64)und /arch (ARM).

Optionen

  • Streaming SIMD Extensions (X86) – Aktiviert Streaming SIMD Extensions. Legt fest /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) – Aktiviert Streaming SIMD-Erweiterungen 2. Legt fest /arch:SSE2.
  • Erweiterte Vektorerweiterungen (X86/X64) – Ermöglicht erweiterte Vektorerweiterungen. Legt fest /arch:AVX.
  • Advanced Vector Extensions 2 (X86/X64) – Ermöglicht erweiterte Vektorerweiterungen 2. Legt fest /arch:AVX2.
  • Advanced Vector Extensions 512 (X86/X64) – Ermöglicht erweiterte Vektorerweiterungen 512. Legt fest /arch:AVX512.
  • Advanced Vector Extensions AVX10.1 (X86/X64) – Aktiviert Advanced Vector Extensions 10, Version 1. Legt fest /arch:AVX10.1.
  • Advanced Vector Extensions AVX10.2 (X86/X64) – Aktiviert Erweiterte Vektorerweiterungen 10, Version 2. Legt fest /arch:AVX10.2.
  • Virtualisierungserweiterungen (ARM) Aktiviert ARM-Virtualisierungserweiterungen. Legt fest /arch:ARMv7VE.
  • ARM VFPv4-Anweisungen (ARM) Aktiviert ARM VFPv4-Anweisungen. Legt fest /arch:VFPv4.
  • CPU-Erweiterungsanforderungen ARMv8.0-A (ARM64) Aktiviert ARMv8.0-A-Anforderungen. Legt fest /arch:arm8.0.
  • CPU-Erweiterungsanforderungen ARMv8.1-A (ARM64). Aktiviert ARMv8.1-A-Anforderungen. Legt fest /arch:arm8.1.
  • CPU-Erweiterungsanforderungen ARMv8.2-A (ARM64) Aktiviert ARMv8.2-A-Anforderungen. Legt fest /arch:arm8.2.
  • CPU-Erweiterungsanforderungen ARMv8.3-A (ARM64) Aktiviert ARMv8.3-A-Anforderungen. Legt fest /arch:arm8.3.
  • CPU-Erweiterungsanforderungen ARMv8.4-A (ARM64) Aktiviert ARMv8.4-A-Anforderungen. Legt fest /arch:arm8.4.
  • CPU-Erweiterungsanforderungen ARMv8.5-A (ARM64) Aktiviert ARMv8.5-A-Anforderungen. Legt fest /arch:arm8.5.
  • CPU-Erweiterungsanforderungen ARMv8.6-A (ARM64) Aktiviert ARMv8.6-A-Anforderungen. Legt fest /arch:arm8.6.
  • CPU-Erweiterungsanforderungen ARMv8.7-A (ARM64). Aktiviert ARMv8.7-A-Anforderungen. Legt fest /arch:arm8.7.
  • CPU-Erweiterungsanforderungen ARMv8.8-A (ARM64). Aktiviert ARMv8.8-A-Anforderungen. Legt fest /arch:arm8.8.
  • Keine erweiterten Anweisungen – Deaktiviert erweiterte Anweisungen für x86-Builds. Legt fest /arch:IA32.
  • Not Set - Legt keine Option explizit fest /arch .

Aktivieren Sie die Verwendung von Anweisungen auf Prozessoren, die erweiterte Anweisungssätze unterstützen. Zum Beispiel die Erweiterungen von IA-32 um SSE, SSE2, AVX und AVX2 sowie die Erweiterungen von x64 um AVX und AVX2. Derzeit sind /arch:SSE und /arch:SSE2 nur beim Erstellen für die x86-Architektur verfügbar. Wenn keine Option angegeben ist, verwendet der Compiler Anweisungen für Prozessoren, die SSE2 unterstützen. Die Verwendung erweiterter Anweisungen kann mit /arch:IA32deaktiviert werden. Weitere Informationen finden Sie unter/arch (x86), /arch (x64), /arch (ARM64)und /arch (ARM).

Optionen

  • Streaming SIMD Extensions (X86) – Aktiviert Streaming SIMD Extensions. Legt fest /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) – Aktiviert Streaming SIMD-Erweiterungen 2. Legt fest /arch:SSE2.
  • Erweiterte Vektorerweiterungen (X86/X64) – Ermöglicht erweiterte Vektorerweiterungen. Legt fest /arch:AVX.
  • Advanced Vector Extensions 2 (X86/X64) – Ermöglicht erweiterte Vektorerweiterungen 2. Legt fest /arch:AVX2.
  • Advanced Vector Extensions 512 (X86/X64) – Ermöglicht erweiterte Vektorerweiterungen 512. Legt fest /arch:AVX512.
  • Advanced Vector Extensions AVX10.1 (X86/X64) – Aktiviert Advanced Vector Extensions 10, Version 1. Legt fest /arch:AVX10.1.
  • Virtualisierungserweiterungen (ARM) Aktiviert ARM-Virtualisierungserweiterungen. Legt fest /arch:ARMv7VE.
  • ARM VFPv4-Anweisungen (ARM) Aktiviert ARM VFPv4-Anweisungen. Legt fest /arch:VFPv4.
  • CPU-Erweiterungsanforderungen ARMv8.0-A (ARM64) Aktiviert ARMv8.0-A-Anforderungen. Legt fest /arch:arm8.0.
  • CPU-Erweiterungsanforderungen ARMv8.1-A (ARM64). Aktiviert ARMv8.1-A-Anforderungen. Legt fest /arch:arm8.1.
  • CPU-Erweiterungsanforderungen ARMv8.2-A (ARM64) Aktiviert ARMv8.2-A-Anforderungen. Legt fest /arch:arm8.2.
  • CPU-Erweiterungsanforderungen ARMv8.3-A (ARM64) Aktiviert ARMv8.3-A-Anforderungen. Legt fest /arch:arm8.3.
  • CPU-Erweiterungsanforderungen ARMv8.4-A (ARM64) Aktiviert ARMv8.4-A-Anforderungen. Legt fest /arch:arm8.4.
  • CPU-Erweiterungsanforderungen ARMv8.5-A (ARM64) Aktiviert ARMv8.5-A-Anforderungen. Legt fest /arch:arm8.5.
  • CPU-Erweiterungsanforderungen ARMv8.6-A (ARM64) Aktiviert ARMv8.6-A-Anforderungen. Legt fest /arch:arm8.6.
  • CPU-Erweiterungsanforderungen ARMv8.7-A (ARM64). Aktiviert ARMv8.7-A-Anforderungen. Legt fest /arch:arm8.7.
  • CPU-Erweiterungsanforderungen ARMv8.8-A (ARM64). Aktiviert ARMv8.8-A-Anforderungen. Legt fest /arch:arm8.8.
  • Keine erweiterten Anweisungen – Deaktiviert erweiterte Anweisungen für x86-Builds. Legt fest /arch:IA32.
  • Not Set - Legt keine Option explizit fest /arch .

Optionen

  • Streaming SIMD-Erweiterungen – Streaming SIMD-Erweiterungen. Festlegen von /arch:SSE
  • Streaming SIMD Extensions 2 – Streaming SIMD Extensions 2. Festlegen von /arch:SSE2
  • Erweiterte Vektorerweiterungen – Erweiterte Vektorerweiterungen. Festlegen von /arch:AVX
  • Erweiterte Vektorerweiterungen 2 – Erweiterte Vektorerweiterungen 2. Festlegen von /arch:AVX2
  • Keine erweiterten Anweisungen – keine erweiterten Anweisungen. Festlegen von /arch:IA32
  • Nicht festgelegt - Nicht festgelegt.

Vektorlänge aktivieren

Aktivieren Sie die Auswahl der Vektorlänge für /arch:AVX512 und /arch:AVX10.x Kennzeichnungen. Zulässige Werte sind 256 und 512 Bit (X86/X64).

Gleitkommamodell

Legt das Gleitkommamodell fest. Legt /fp:precise, /fp:fast, /fp:strict fest.

Optionen

  • Genau – Standardwert. Verbessert die Konsistenz von Gleitkommatests für Gleichheit und Ungleichheit.
  • Strikt – Das strengste Gleitkommamodell. /fp:strict bewirkt, dass fp_contract deaktiviert und fenv_access aktiviert ist. /fp:except ist impliziert und kann durch explizite Angabe /fp:except-deaktiviert werden. Bei Verwendung mit /fp:except- erzwingt /fp:strict wird strenge Gleitkommazahlensemantik erzwungen, unabhängig von außergewöhnlichen Ereignissen.
  • Schnell – Erstellt den schnellsten Code in den meisten Fällen.

Gleitkomma-Ausnahmen aktivieren

Verlässliches Modell für Gleitkommaausnahmen. Ausnahmen werden unmittelbar nach dem Auslösen erhoben. Legt fest /fp:except.

Erstellen Sie ein Hotpatch-fähiges Image

Wenn hotpatching aktiviert ist, stellt der Compiler sicher, dass die erste Anweisung jeder Funktion zwei Bytes ist, wie für das Hot Patching erforderlich. Legt fest /hotpatch.

Spectre-Abschwächung

Spectre-Abhilfemaßnahmen für CVE 2017-5753. Legt fest /Qspectre.

Optionen

  • Aktiviert – Aktivieren sie die Spectre-Entschärfung für CVE 2017-5753.
  • Alle Lasten – Aktivieren Sie die Spectre-Entschärfung für alle Lasten.
  • Alle Kontrollfluss-Ladevorgänge – Aktivieren Sie die Spectre-Abwehrmaßnahmen für Kontrollfluss-Ladevorgänge.
  • Deaktiviert – Nicht festgelegt.

Spectre-Abschwächung

Spectre-Abhilfemaßnahmen für CVE 2017-5753. Legt fest /Qspectre.

Optionen

  • Aktiviert – Aktivieren sie die Spectre-Entschärfung für CVE 2017-5753.
  • Deaktiviert – Nicht festgelegt.

Aktivieren von Intel JCC Erratum Mitigation

Softwareproblemlösung bei Leistungsauswirkungen, die durch das Intel JCC Erratum Microcode-Update verursacht werden. Legt fest /QIntel-jcc-erratum.

Aktivieren von EH-Fortsetzungsmetadaten

Generiert eine sortierte Liste aller gültigen Fortsetzungsziele für die Ausnahmebehandlung für eine Binärdatei, die während der Laufzeit für die RIP-Überprüfung verwendet wird. Derzeit für x64-Builds verfügbar. Legt fest /guard:ehcont.

Signierte Rückgaben aktivieren

Aktiviert signierte Rückgaben, die dabei helfen, Versuche zu erkennen und zu verhindern, bei Funktionsrückgaben zu unzulässigen Blöcken zu verzweigen. Derzeit verfügbar für ARM64-Builds. Legt fest /guard:signret.

C/C++-Spracheigenschaften

Spracherweiterungen deaktivieren

Unterdrückt oder aktiviert Spracherweiterungen. Legt fest /Za.

Behandle WChar_t als eingebauten Typ

Wenn Sie diese Eigenschaft aktivieren, wird der Typ wchar_t zu einem nativen Typ, der __wchar_t auf die gleiche Weise zugeordnet wird, wie short__int16 zugeordnet wird. /Zc:wchar_t ist standardmäßig aktiviert.

Übereinstimmung in For-Schleifenbereich erzwingen

Implementiert standardmäßiges C++-Verhalten für die for Anweisungsschleifen mit Microsoft-Erweiterungen. Legt fest /Za, /Ze (Spracherweiterungen deaktivieren. /Zc:forScope ist standardmäßig aktiviert.

Entfernen nicht referenzierter Code und Daten

Wenn Sie diese Eigenschaft aktivieren, generiert der Compiler keine Symbolinformationen mehr für nicht referenzierten Code und Daten.

Typkonvertierungsregeln erzwingen

Wird verwendet, um einen Rvalue-Bezugstyp als Ergebnis eines Umwandlungsvorgangs gemäß dem C++11-Standard zu identifizieren.

Laufzeittypeninformationen aktivieren

Fügt Code zum Überprüfen von C++-Objekttypen zur Laufzeit hinzu (Laufzeittypinformationen oder RTTI). Sätze /GR, /GR-.

OpenMP-Unterstützung

Aktiviert OpenMP 2.0-Spracherweiterungen. Legt fest /openmp.

C++-Sprachstandard

Bestimmt den C++-Sprachstandard, den der Compiler erzwingt. Der Standardwert legt keine Standardoption fest, sodass der Compiler seine C++14-Standardeinstellung verwendet. Wenn Sie einen bestimmten Wert auswählen, wird die entsprechende /std Compileroption festgelegt.

Optionen

  • Standard (ISO C++14 Standard)
  • ISO C++14 Standard (/std:c++14)
  • ISO C++17 Standard (/std:c++17)
  • ISO C++20 Standard (/std:c++20)
  • Vorschau – ISO C++23 Standard (/std:c++23preview)
  • Vorschau – Features aus dem neuesten C++-Arbeitsentwurf (/std:c++latest)

C-Sprachstandard

Bestimmt den C-Sprachstandard, den der Compiler erzwingt. Der Standardwert legt keine Standardoption fest, sodass der Compiler seine standardmäßige MSVC-Standardeinstellung verwendet. Wenn Sie einen bestimmten Wert auswählen, wird die entsprechende /std Compileroption festgelegt.

Optionen

  • Standardmäßig (Legacy MSVC)
  • ISO C11 Standard (/std:c11)
  • ISO C17 (2018) Standard (/std:c17)
  • Vorschau – Features aus dem neuesten C Working Draft (/std:clatest)

Konformitätsmodus

Aktiviert oder unterdrückt den Konformitätsmodus. Legt fest /permissive-.

Experimentelle C++-Standardbibliotheksmodule aktivieren

Experimentelle Unterstützung für die C++-Module TS- und Standardbibliotheksmodule.

Erstellen von ISO C++23-Standardbibliotheksmodulen

Ab Visual Studio 17.6 suchen und erstellen Microsoft C++-Projekte automatisch ISO C++23-Standardbibliotheksmodule, wenn diese Eigenschaft aktiviert ist und C++-Sprachstandard auf /std:c++latest festgelegt ist. Damit können Sie import std oder import std.compat in Ihrem C++-Code ausführen.

Eigenschaften vorkompilierter Header für C/C++

Vorkompilierter Header

Vorkompilierte Kopfzeile erstellen/verwenden

Ermöglicht die Erstellung oder Verwendung eines vorkompilierten Headers während der Erstellung. Sätze /Yc, /Yu.

Optionen

  • Create - Weist den Compiler an, eine vorkompilierte Headerdatei (.pch) zu erstellen, die den Kompilierungsstatus an einem bestimmten Punkt darstellt.
  • Use - Weist den Compiler an, eine vorhandene vorkompilierte Headerdatei (.pch) in der aktuellen Kompilierung zu verwenden.
  • Keine vorkompilierten Kopfzeilen verwenden – Keine vorkompilierten Kopfzeilen.

Vorkompilierte Headerdatei

Gibt den Namen der Headerdatei an, die der Compiler zum Erstellen oder Zugreifen auf einen vorkompilierten Header verwendet. Sätze /Yc, /Yu.

Vorkompilierte Headerausgabedatei

Gibt den Pfad oder Namen der generierten vorkompilierten Headerdatei an. Legt fest /Fp.

C/C++-Ausgabedateien-Eigenschaften

Zugewiesene Quelle erweitern

Erstellt eine Eintragsdatei mit erweiterten Attributen, die in die Quelldatei eingefügt wurden. Legt fest /Fx.

Assembler-Ausgabe

Gibt den Inhalt der Assemblysprachenausgabedatei an. Legt fest /FA, /FAs, /FAc, /FAcs.

Optionen

  • Keine Auflistung - Keine Auflistung.
  • Nur-Assembly-Auflistung - Assembly-Code: .asm.
  • Assembly mit Computercode - Computer- und Assemblycode: .cod.
  • Assembler mit Quellcode - Quell- und Assemblercode: .asm.
  • Assembly, Computercode und Quelle – Assembly , Computercode und Quellcode: .cod.

Verwenden von Unicode für Assembler-Auflistung

Bewirkt, dass die Ausgabedatei im UTF-8-Format erstellt wird.

ASM-Listenspeicherort

Gibt den relativen Pfad oder Namen für die ASM-Eintragsdatei an. Kann ein Datei- oder Verzeichnisname sein. Legt fest /Fa.

Name der Modulausgabedatei

Speicherort der Ausgabedatei für Modul oder Headereinheit (BMI). Kann ein Datei- oder Verzeichnisname sein. Legt fest /ifcOutput[name].

Dateiname der Modulabhängigkeiten

Gibt den Pfad und/oder den Namen der generierten Modulabhängigkeitsdatei an. Legt fest /scanDependencies[path].

Name der Objektdatei

Gibt einen Namen an, der den Standardobjektdateinamen überschreibt. Kann ein Datei- oder Verzeichnisname sein. Legt fest /Fo.

Name der Programmdatenbankdatei

Gibt einen Namen für eine vom Compiler generierte PDB-Datei an. Gibt außerdem den Basisnamen für die erforderliche vom Compiler generierte IDB-Datei an. Kann ein Datei- oder Verzeichnisname sein. Legt fest /Fd.

Xml-Dokumentationsdateien generieren

Gibt an, dass der Compiler XML-Dokumentationskommentardateien generieren soll (. XDC). Legt fest /doc.

XML-Dokumentationsdateiname

Gibt den Namen der generierten XML-Dokumentationsdateien an. Kann ein Datei- oder Verzeichnisname sein. Legt den /doc:<Namen fest.>

Abhängigkeitsdatei der Quelle generieren

Generiert eine JSON-Datei mit der Liste aller Dateien, die der Compiler für die Kompilierung der Quelle verwendet. Legt fest /sourceDependencies.

Dateiname der Quellabhängigkeiten

Gibt den Pfad und/oder den Namen der generierten Quellabhängigkeitsdatei an. Legt fest /sourceDependencies[path].

C/C++-Eigenschaften zum Durchsuchen von Informationen

Durchsuchen von Informationen aktivieren

Gibt an, ob der Compiler eine .bsc Datei generieren soll. Legt fest /FR.

Informationsdatei durchsuchen

Gibt einen optionalen Namen für die Browserinformationsdatei an. Legt den /FR<Namen fest.>

C/C++-Eigenschaften für externe Includes

Dateien in Winkelklammern als extern behandeln

Gibt an, ob Dateien, die in spitzen Klammern enthalten sind, als extern behandelt werden sollen. Legen Sie diese Eigenschaft auf "Ja " fest, um die /external:anglebrackets Compileroption festzulegen.

Warnungsebene für externe Header

Wählen Sie aus, wie streng der Compiler zu Codefehlern in externen Headern sein soll. Diese Eigenschaft legt die /external:Wn Compileroption fest. Wenn dieser Wert auf Inherit Project Warning Level oder "Standard" festgelegt ist, werden die anderen /external-Optionen ignoriert.

Vorlagendiagnose in externen Headern

Gibt an, ob die Warnstufe in einer Vorlageninstanzenkette ausgewertet werden soll. Legen Sie diese Eigenschaft auf "Ja " fest, um die /external:templates- Compileroption festzulegen.

Codeanalyse für externe Header deaktivieren

Deaktiviert die Codeanalyse für externe Header. Legt die /analyze:external- Compileroption fest.

Regelsatz für die Analyse von externen Kopfzeilen

Gibt eine Codeanalyse-Regelsatzüberschreibung für externe Header an. Wenn diese Eigenschaft nicht angegeben ist, wird die einstellung Code Analysis verwendet. Legt die /analyze:external:ruleset path Compileroption fest.

Erweiterte C/C++-Eigenschaften

Aufrufkonvention

Wählen Sie die Standardaufrufkonvention für Ihre Anwendung aus (kann von Funktion überschrieben werden). Sets /Gd, /Gz, /Gr, /Gv.

Optionen

  • __cdecl – Gibt die __cdecl-Aufrufkonvention für alle Funktionen an, mit Ausnahme von C++-Memberfunktionen und Funktionen, die mit __stdcall oder __fastcall gekennzeichnet sind.
  • __fastcall – Gibt die __fastcall-Aufrufkonvention für alle Funktionen an, mit Ausnahme von C++-Memberfunktionen sowie von Funktionen, die mit __cdecl oder __stdcall gekennzeichnet sind. Alle __fastcall-Funktionen müssen Prototypen haben.
  • __stdcall – Gibt die __stdcall-Aufrufkonvention für alle Funktionen an, mit Ausnahme von C++-Memberfunktionen und mit __cdecl oder __fastcall markierten Funktionen. Alle __stdcall-Funktionen müssen Prototypen haben.
  • __vectorcall - Gibt die __vectorcall Aufrufkonvention für alle Funktionen an, mit Ausnahme von C++-Memberfunktionen und -funktionen, die markiert __cdeclsind , __fastcalloder __stdcall. Alle __vectorcall-Funktionen müssen Prototypen haben.

Kompilieren als

Wählen Sie eine Kompilierungsspracheoption für Quelldateien aus. Legt /TC, /TP, /interface, /internalPartition oder /exportHeader Optionen fest.

Optionen

  • Standard – Standardwert.
  • Kompilieren als C Code (/TC) – Kompilieren der angegebenen Quelldateien als C-Code. Standardmäßig werden Dateien mit einer .c Erweiterung als C kompiliert.
  • Kompilieren als C++-Code (/TP) – Kompilieren der angegebenen Quelldateien als C++-Code. Standardmäßig werden alle Quelldateien, die weder über eine .c.ixx.cppm.h Erweiterung noch über eine Erweiterung verfügen, als C++ kompiliert.
  • Kompilieren als C++-Modulcode (/interface) – Kompilieren der angegebenen Quelldateien als C++-Modulcode. Standardmäßig werden Dateien mit der Dateierweiterung .ixx oder .cppm als C++-Modulcode kompiliert.
  • Kompilieren als interne C++-Modulpartition (/internalPartition) – Kompilieren der angegebenen Quelldateien als interne C++-Modulpartition.
  • Kompilieren als C++-Headereinheit (/exportHeader) – Kompilieren der angegebenen Quelldateien als C++-Headereinheit. Standardmäßig werden Dateien mit einer .h Erweiterung oder ohne Erweiterung als Kopfzeileneinheiten kompiliert.

Bestimmte Warnungen deaktivieren

Deaktivieren Sie die angegebenen Warnnummern. Fügen Sie die Warnnummern in eine durch Semikolons getrennte Liste ein. Legt die Anzahl fest/wd<>.

Explizite Includedatei

Gibt mindestens eine erzwungene Includedatei an. Legt den /FI<Namen fest.>

Explizite #using-Datei

Gibt mindestens eine erzwungene #using-Datei an. Legt den /FU<Namen fest.>

Einschlüsse anzeigen

Erzeugt eine Liste von Include-Dateien mit der Compilerausgabe. Legt fest /showIncludes.

Vollständige Pfade verwenden

Verwenden Sie vollständige Pfade in Diagnosenachrichten. Legt fest /FC.

Standardbibliotheksname weglassen

Gibt an, dass Standardbibliotheksnamen in .obj Dateien weggelassen werden sollen. Legt fest /Zl.

Meldung interner Compilerfehler

Hinweis

Diese Option ist veraltet. Ab Windows Vista wird die Fehlerberichterstattung durch Windows-Fehlerberichterstattung (WER)-Einstellungen gesteuert.

Behandeln bestimmter Warnungen als Fehler

Behandelt die spezifische Compilerwarnung als Fehler, wobei n eine Compilerwarnung ist.

Zusätzliche Optionen

Zusätzliche Optionen.