Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Azok az Open Folder projektek, amelyek nem használnak CMake-et, egy CppProperties.json fájlban tárolhatják az IntelliSense-hez szükséges projektkonfigurációs beállításokat. (A CMake-projektek fájlokat CMakeSettings.json használnak.) A konfiguráció név-érték párokból áll, és meghatározza #include elérési utakat, fordítókapcsolókat és egyéb paramétereket. A konfigurációk Open Folder-projektekben való hozzáadásáról további információt a C++ mappaprojektek megnyitása című témakörben talál. A következő szakaszok összefoglalják a különböző beállításokat. A séma teljes leírásához keresse meg a CppProperties_schema.json, amelynek teljes elérési útja a kódszerkesztő tetején található, amikor CppProperties.json meg van nyitva.
Konfigurációs tulajdonságok
A konfigurációk a következő tulajdonságok bármelyikével rendelkezhetnek:
| Név | Leírás |
|---|---|
inheritEnvironments |
Meghatározza, hogy mely környezetek vonatkoznak erre a konfigurációra. |
name |
A C++ konfigurációs legördülő menüben megjelenő konfigurációnév |
includePath |
Vesszővel elválasztott mappalista, amelyet meg kell adni az include útvonalban (a legtöbb fordító esetében a /I-hoz illeszkedik) |
defines |
A definiálandó makrók listája (a legtöbb fordítóhoz /D megfelel) |
compilerSwitches |
Egy vagy több további kapcsoló, amely befolyásolhatja az IntelliSense viselkedését |
forcedInclude |
Az összes fordítási egységbe automatikusan belefoglalandó fejléc (az MSVC-hez /FI vagy -include a clang-hez készült térképek) |
undefines |
A nem definiálandó makrók listája (az MSVC-hez /U készült térképek) |
intelliSenseMode |
A használni kívánt IntelliSense motor. Megadhatja az MSVC, a gcc vagy a Clang előre definiált architektúraspecifikus változatait. |
environments |
A parancssorban a környezeti változókhoz hasonlóan viselkedő és a ${env.VARIABLE} makróval elérhető, felhasználó által definiált változókészletek. |
intelliSenseMode értékek
A kódszerkesztő a gépelés megkezdésekor az elérhető lehetőségeket jeleníti meg:
Ez a lista a támogatott értékeket jeleníti meg:
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
Megjegyzés: Az értékek msvc-x86msvc-x64 csak örökölt okokból támogatottak. Használja inkább a windows-msvc-* változatokat.
Előre definiált környezetek
A Visual Studio az alábbi előre definiált környezeteket biztosítja a Microsoft C++ számára, amelyek megfeleltetik a megfelelő fejlesztői parancssort. Ha ezen környezetek egyikét örökli, a környezeti változók bármelyikére hivatkozhat a globális tulajdonság env ezzel a makrószintaxissal: ${env.VARIABLE}.
| Változó neve | Leírás |
|---|---|
vsdev |
Az alapértelmezett Visual Studio-környezet |
msvc_x86 |
Fordítás x86-hoz x86-eszközökkel |
msvc_x64 |
Fordítás AMD64-hez 64 bites eszközökkel |
msvc_arm |
Fordítás ARM-re x86 eszközökkel |
msvc_arm64 |
Fordítás ARM64-hez x86-eszközökkel |
msvc_x86_x64 |
Fordítás AMD64-hez x86-eszközökkel |
msvc_arm_x64 |
Fordítás ARM-hez 64 bites eszközökkel |
msvc_arm64_x64 |
Fordítás ARM64-hez 64 bites eszközökkel |
A Linux számítási feladat telepítésekor a következő környezetek érhetők el a Linux és a WSL távoli célzásához:
| Változó neve | Leírás |
|---|---|
linux_x86 |
Az x86 Linux távoli célzása |
linux_x64 |
Célozza meg az x64 Linux rendszert távolról |
linux_arm |
Arm Linux távoli megcélzása |
Felhasználó által definiált környezetek
Lehetőség szerint a environments tulajdonságot használhatja változókészletek CppProperties.json globálisan vagy konfigurációnként történő meghatározására. Ezek a változók úgy viselkednek, mint a környezeti változók egy Nyitott mappa projekt kontextusában. A ${env.VARIABLE} szintaxissal tasks.vs.json és launch.vs.json elérheti őket, miután itt definiálták őket. A Visual Studio által belsőleg használt parancssorokban azonban nem feltétlenül vannak tényleges környezeti változókként beállítva.
Visual Studio 2019 16.4-es és újabb verzió: A konfigurációspecifikus változókat CppProperties.json a rendszer automatikusan felveszi a hibakeresési célokkal és feladatokkal anélkül, hogy be kellene állítania inheritEnvironments. A hibakeresési célok automatikusan elindulnak a megadott CppProperties.jsonkörnyezettel.
Visual Studio 2019 16.3-s és korábbi verzió: Amikor környezetet használ, akkor is meg kell adnia azt a inheritsEnvironments tulajdonságban, még akkor is, ha a környezet ugyanannak a konfigurációnak a részeként van definiálva; a environment tulajdonság a környezet nevét adja meg. Az alábbi példa egy mintakonfigurációt mutat be, amely lehetővé teszi az IntelliSense for GCC használatát egy MSYS2-telepítésben. Figyelje meg, hogy a konfiguráció hogyan határozza meg és örökli a mingw_64 környezetet, és hogyan fér hozzá a includePath tulajdonság a INCLUDE változóhoz.
"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"
}
]
}
]
Ha egy tulajdonságot egy "environments" konfiguráción belül határoz meg, az felülírja az azonos nevű globális változókat.
Beépített makrók
A következő beépített makrókat érheti el:CppProperties.json
| Makró | Leírás |
|---|---|
${workspaceRoot} |
A munkaterület mappájának teljes elérési útja |
${projectRoot} |
Annak a mappának a teljes elérési útja, amelyben a CppProperties.json található |
${env.vsInstallDir} |
Annak a mappának a teljes elérési útja, amelyben a Visual Studio futó példánya telepítve van |
példa
Ha a projekt tartalmaz egy include mappát, és a Windows SDK-ből *-t és más gyakori fejléceket is tartalmaz, érdemes lehet frissítenie a *windows.h konfigurációs fájlt a következőkkel:
{
"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"
]
}
]
}
Megjegyzés:
%WindowsSdkDir% és %VCToolsInstallDir% nem globális környezeti változóként vannak beállítva. Győződjön meg arról, hogy egy fejlesztői parancssorból indul devenv.exe ki, amely meghatározza ezeket a változókat. (A Fejlesztői parancssor parancsikonjának megkereséséhez írja be a "fejlesztő" szót a Windows Start menübe.)
IntelliSense-hibák elhárítása
Ha nem látja a várt IntelliSense-t, hibaelhárításhoz lépjen az Eszközök>beállításai>szövegszerkesztő>C/C++>Speciális elemére, és állítsa be a Naplózástrueengedélyezése lehetőséget. Első lépésként próbálja meg 5-ösre állítani a naplózási szintet , a naplózási szűrőket pedig 8-ra.
A kimenet a Kimeneti ablakba van csövezve, és akkor jelenik meg, ha a Kimenet megjelenítése: Visual C++ Napló lehetőséget választja. A kimenet tartalmazza többek között az IntelliSense által használni kívánt tényleges elérési utak listáját. Ha az elérési utak nem egyeznek a CppProperties.json-ban megadottakkal, próbálja meg bezárni a mappát, és törölje a .vs almappát, amely gyorsítótárazott böngészési adatokat tartalmaz.
A hiányzó elérési utakból eredő IntelliSense-hibák elhárításához nyissa meg a Hibalista lapot, majd szűrje a kimenetét "csak IntelliSense" és E1696 hibakód "nem tudja megnyitni a forrásfájlt ..." értékre.