Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ordnerprojekte öffnen, die CMake nicht verwenden, können Projektkonfigurationseinstellungen für IntelliSense in einer CppProperties.json Datei speichern. (CMake-Projekte verwenden eine CMakeSettings.json Datei.) Eine Konfiguration besteht aus Name/Wert-Paaren und definiert #include Pfade, Compileroptionen und andere Parameter. Weitere Informationen zum Hinzufügen von Konfigurationen in einem Open Folder-Projekt finden Sie unter Open Folder projects for C++. In den folgenden Abschnitten werden die verschiedenen Einstellungen zusammengefasst. Um eine vollständige Beschreibung des Schemas zu erhalten, navigieren Sie zu CppProperties_schema.json, deren vollständiger Pfad oben im Code-Editor angegeben wird, wenn CppProperties.json sie geöffnet ist.
Konfigurationseigenschaften
Eine Konfiguration kann folgende Eigenschaften aufweisen:
| Name | Beschreibung |
|---|---|
inheritEnvironments |
Hiermit wird angegeben, für welche Umgebungen diese Konfiguration gilt. |
name |
Dies ist der Konfigurationsname, der im Dropdownmenü für die C++-Konfiguration angezeigt wird. |
includePath |
Eine durch Trennzeichen getrennte Liste von Ordnern, die im Includepfad angegeben werden sollen (ist für die meisten Compiler zugeordnet /I ) |
defines |
Die Liste der Makros, die definiert werden sollen (ist für die meisten Compiler zugeordnet /D ) |
compilerSwitches |
Eine oder mehrere zusätzliche Optionen, die das Verhalten von IntelliSense beeinflussen können |
forcedInclude |
Header, der automatisch in jede Kompilierungseinheit eingeschlossen werden soll (ist für MSVC oder /FI für Clang zugeordnet-include) |
undefines |
Die Liste der Makros, die nicht definiert werden sollen (ist für MSVC zugeordnet /U ) |
intelliSenseMode |
Die zu verwendende IntelliSense-Engine Sie können eine der vordefinierten, architekturspezifischen Varianten für MSVC, GCC oder Clang angeben. |
environments |
Benutzerdefinierte Variablensätze, die sich wie Umgebungsvariablen in einer Eingabeaufforderung verhalten und mit dem ${env.VARIABLE} Makro aufgerufen werden. |
intelliSenseMode-Werte
Der Code-Editor zeigt die verfügbaren Optionen an, wenn Sie mit der Eingabe beginnen:
Diese Liste zeigt die unterstützten Werte an:
windows-msvc-x86windows-msvc-x64windows-msvc-armwindows-msvc-arm64android-clang-x86android-clang-x64android-clang-armandroid-clang-arm64ios-clang-x86ios-clang-x64ios-clang-armios-clang-arm64windows-clang-x86windows-clang-x64windows-clang-armwindows-clang-arm64linux-gcc-x86linux-gcc-x64linux-gcc-arm
Hinweis: Die Werte msvc-x86 und msvc-x64 werden nur aus älteren Gründen unterstützt. Verwenden Sie stattdessen die windows-msvc-*-Varianten.
Vordefinierte Umgebungen
Visual Studio bietet die folgenden vordefinierten Umgebungen für Microsoft C++, die der entsprechenden Developer-Eingabeaufforderung zugeordnet sind. Wenn Sie eine dieser Umgebungen erben, können Sie auf eine der Umgebungsvariablen verweisen, indem Sie die globale Eigenschaft env mit dieser Makrosyntax verwenden: ${env.VARIABLE}
| Variablenname | Beschreibung |
|---|---|
vsdev |
Die Standardumgebung von Visual Studio |
msvc_x86 |
Kompiliert mithilfe von x86-Tools für x86 |
msvc_x64 |
Kompiliert mithilfe von 64-Bit-Tools für AMD64 |
msvc_arm |
Kompiliert mithilfe von x86-Tools für ARM |
msvc_arm64 |
Kompiliert mithilfe von x86-Tools für ARM64 |
msvc_x86_x64 |
Kompiliert mithilfe von x86-Tools für AMD64 |
msvc_arm_x64 |
Kompiliert mithilfe von 64-Bit-Tools für ARM |
msvc_arm64_x64 |
Kompiliert mithilfe von 64-Bit-Tools für ARM64 |
Wenn die Linux-Workload installiert ist, können folgende Umgebungen verwendet werden, um Linux und WSL remote anzuzielen:
| Variablenname | Beschreibung |
|---|---|
linux_x86 |
Hiermit wird x86 Linux als Remotezielversion festgelegt. |
linux_x64 |
Hiermit wird x64 Linux als Remotezielversion festgelegt. |
linux_arm |
Hiermit wird ARM Linux als Remotezielversion festgelegt. |
Benutzerdefinierte Umgebungen
Optional können Sie die environments Eigenschaft verwenden, um Variablengruppen entweder CppProperties.json global oder pro Konfiguration zu definieren. Diese Variablen verhalten sich wie Umgebungsvariablen im Kontext eines Open Folder-Projekts. Sie können mit der Syntax von ${env.VARIABLE} und tasks.vs.json nach der launch.vs.json Definition hier darauf zugreifen. Sie werden jedoch nicht unbedingt als tatsächliche Umgebungsvariablen an einer Eingabeaufforderung festgelegt, die Visual Studio intern verwendet.
Visual Studio 2019, Version 16.4 und höher: Konfigurationsspezifische Variablen, die in CppProperties.json definiert sind, werden automatisch von Debugzielen und Aufgaben aufgenommen, ohne dass sie festgelegt inheritEnvironmentswerden müssen. Debugziele werden automatisch mit der Umgebung gestartet, in CppProperties.jsonder Sie angeben.
Visual Studio 2019, Version 16.3 und früher: Wenn Sie eine Umgebung verwenden, müssen Sie sie in der inheritsEnvironments Eigenschaft angeben, auch wenn die Umgebung als Teil derselben Konfiguration definiert ist; die environment Eigenschaft gibt den Namen der Umgebung an. Das folgende Beispiel zeigt eine Beispielkonfiguration zum Aktivieren von IntelliSense für GCC in einer MSYS2-Installation. Beachten Sie, dass die Konfiguration sowohl die mingw_64-Umgebung definiert als auch erbt und wie die includePath-Eigenschaft auf die INCLUDE-Variable zugreifen kann.
"configurations": [
{
"inheritEnvironments": [
"mingw_64"
],
"name": "Mingw64",
"includePath ,": [
"${env.INCLUDE}",
"${workspaceRoot}\\**",
],
"intelliSenseMode": "linux-gcc-x64",
"environments": [
{
"MINGW64_ROOT": "C:\\msys64\\mingw64",
"BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
"FLAVOR": "x86_64-w64-mingw32",
"TOOLSET_VERSION": "9.1.0",
"PATH": "${env.MINGW64_ROOT}\\bin;${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
"INCLUDE": "${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR};",
"environment": "mingw_64"
}
]
}
]
Wenn Sie eine Eigenschaft innerhalb einer "environments" Konfiguration definieren, überschreibt sie alle globalen Variablen mit denselben Namen.
Integrierte Makros
Sie können innerhalb von CppProperties.json auf folgende integrierte Makros zugreifen:
| Makro | Beschreibung |
|---|---|
${workspaceRoot} |
den vollständigen Pfad zum Arbeitsbereichordner |
${projectRoot} |
Der vollständige Pfad zu dem Ordner, in dem CppProperties.json platziert wird |
${env.vsInstallDir} |
den vollständigen Pfad zum Ordner, in dem die ausgeführte Instanz von Visual Studio installiert ist |
Beispiel
Wenn Ihr Projekt über einen Includeordner verfügt und auch * und andere allgemeine Header aus dem Windows SDK enthält *windows.h, sollten Sie ihre CppProperties.json Konfigurationsdatei mit den folgenden Komponenten aktualisieren:
{
"configurations": [
{
"name": "Windows",
"includePath": [
// local include folder
"${workspaceRoot}\\include",
// Windows SDK and CRT headers
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\ucrt",
"${env.NETFXSDKDir}\\include\\um",
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\um",
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\shared",
"${env.VCToolsInstallDir}\\include"
]
}
]
}
Hinweis
%WindowsSdkDir% und %VCToolsInstallDir% sind nicht als globale Umgebungsvariablen festgelegt. Stellen Sie sicher, dass Sie mit einer Entwickler-Eingabeaufforderung beginnen devenv.exe , die diese Variablen definiert. (Geben Sie im Windows-Startmenü "Entwicklertools" ein, um eine Verknüpfung mit der Eingabeaufforderung für Entwickler zu finden.)
Problembehandlung für IntelliSense-Fehler
Wenn die von Ihnen erwartete IntelliSense-Funktion nicht angezeigt wird, können Sie probleme beheben, indem Sie unter >> wechseln und die Protokollierung> Versuchen Sie für den Beginn, den Protokolliergrad auf 5 festzulegen und die Protokollierungsfilter auf 8.
Die Ausgabe wird an das Ausgabefenster weitergeleitet und wird angezeigt, wenn Sie "Ausgabe anzeigen von: Visual C++-Protokoll" auswählen. Die Ausgabe enthält u. a. die Liste der tatsächlichen Includepfade, die IntelliSense versucht zu verwenden. Wenn die Pfade nicht mit den CppProperties.jsonPfaden übereinstimmen, schließen Sie den Ordner, und löschen Sie den Unterordner, der .vs zwischengespeicherte Browserdaten enthält.
Um IntelliSense-Fehler zu beheben, die durch fehlende Pfade verursacht werden, öffnen Sie die Registerkarte "Fehlerliste ", und filtern Sie dann die Ausgabe nach "Nur IntelliSense" und Fehlercode E1696 "Kann Quelldatei nicht öffnen ...".