Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I vissa fall kan du behöva konfigurera C++-projektet manuellt för att intelliSense ska fungera korrekt. För MSBuild-projekt (baserat på .vcxproj filer) kan du justera inställningarna i projektegenskaper. För icke-MSBuild-projekt justerar du inställningarna i CppProperties.json filen i projektets rotkatalog. I vissa fall kan du behöva skapa en tipsfil som hjälper IntelliSense att förstå makrodefinitioner. Visual Studio IDE hjälper dig att identifiera och åtgärda IntelliSense-problem.
IntelliSense för enskild fil
När du öppnar en fil som inte ingår i ett projekt ger Visual Studio ett visst stöd för IntelliSense, men som standard visas inga felmarkeringar. Om navigeringsfältet säger Diverse filer, förklarar det förmodligen varför du inte ser felmarkeringar under felaktig kod eller varför en preprocessor-makro inte är definierad.
Kontrollera fellistan
Om en fil inte är öppen i enfilsläge och IntelliSense inte fungerar korrekt är det första stället att kontrollera fönstret Fellista . Om du vill se alla IntelliSense-fel för den aktuella källfilen tillsammans med alla inkluderade huvudfiler väljer du Build + IntelliSense i listrutan:
IntelliSense genererar högst 1 000 fel. Om det finns fler än 1 000 fel i huvudfilerna som inkluderas av en källfil, visar källfilen bara en enda felmarkering precis i början av källfilen.
Kontrollera att #include sökvägarna är korrekta
MSBuild-projekt
Om du kör dina versioner utanför Visual Studio IDE och dina versioner lyckas, men IntelliSense är felaktigt, är det möjligt att kommandoraden inte är synkroniserad med projektinställningarna för en eller flera konfigurationer. Högerklicka på projektnoden i Solution Explorer och kontrollera att alla #include sökvägar är korrekta för den aktuella konfigurationen och plattformen. Om sökvägarna är identiska i alla konfigurationer och plattformar kan du välja Alla konfigurationer och Alla plattformar och sedan kontrollera att sökvägarna är korrekta.
Om du vill se aktuella värden för build-makron, till exempel VC_IncludePath, väljer du listrutan Inkludera kataloger . Välj <sedan Redigera> och välj knappen Makron .
Makefile-projekt
För Makefile-projekt som baseras på NMake-projektmallen väljer du NMake under Konfigurationsegenskaper och väljer sedan Inkludera sökväg i kategorin IntelliSense :
CMake-projekt
För CMake-projekt kontrollerar du att #include sökvägar har angetts korrekt för alla konfigurationer i CMakeLists.txt. Andra projekttyper kan kräva en CppProperties.json fil. Mer information finns i Konfigurera kodnavigering med CppProperties.json. Kontrollera att sökvägarna är korrekta för varje konfiguration som definieras i filen.
Om det finns ett syntaxfel i CppProperties.json filen är IntelliSense i de berörda filerna felaktigt. Visual Studio visar felet i utdatafönstret.
Problem med taggparser
Taggparsern är en fuzzy C++ parser som används för surfning och navigering. Den är snabb men försöker inte helt förstå varje kodkonstruktion.
Den utvärderar till exempel inte makron för förprocessorer och kan därför felaktigt parsa kod som använder dem. När Tag Parser stöter på en obekant kodkonstruktion kan den hoppa över hela kodområdet.
Det finns två vanliga sätt på vilka det här problemet manifesteras i Visual Studio:
IDE:t erbjuder sig att skapa en funktionsdefinition för en funktion som redan har definierats.
Om navigeringsfältet visar ett makro innerst, har den aktuella funktionsdefinitionen hoppats över.
Kodfragmentet visar en makrodefinition för do_if som används i funktionen main. Taggparsern förstår inte makrot, så i stället för den navigeringslistruta som visar att namnet på den aktuella funktionen är huvudfunktionen visas namnet på makrot: do_if.
Du kan åtgärda den här typen av problem genom att lägga till en fil med namnet cpp.hint i roten i din lösningskatalog. Mer information finns i Tipsfiler.
Taggparserfel visas i fellista -fönstret.
Verifiera projektinställningar med diagnostikloggning
Om du vill kontrollera om IntelliSense-kompilatorn använder rätt kompilatoralternativ, inklusive Inkludera sökvägar och makron för förprocessor, aktiverar du Diagnostikloggning av IntelliSense-kommandorader i Verktyg > Alternativ > Textredigerare > C/C++ > Avancerad > diagnostikloggning. Ställ in Enable Logging till True, loggningsnivå till 5 (mest utförlig), och loggningsfilter till 8 (IntelliSense-loggning).
Utdatafönstret visar nu de kommandorader som skickas till IntelliSense-kompilatorn. Här är ett exempel på utdata:
[IntelliSense] Configuration Name: Debug|Win32
[IntelliSense] Toolset IntelliSense Identifier:
[IntelliSense] command line options:
/c
/I.
/IC:\Repo\Includes
/DWIN32
/DDEBUG
/D_DEBUG
/Zc:wchar_t-
/Zc:forScope
/Yustdafx.h
Den här informationen kan hjälpa dig att förstå varför IntelliSense tillhandahåller felaktig information. Om till exempel projektets Include-katalog innehåller $(MyVariable)\Includeoch diagnostikloggen visas /I\Include som en Inkludera-sökväg innebär det att den $(MyVariable) inte utvärderades och togs bort från den slutliga inkluderingssökvägen.
Om IntelliSense-builden
Visual Studio använder en dedikerad C++-kompilator för att skapa och underhålla databasen som driver alla IntelliSense-funktioner. För att hålla IntelliSense-databasen synkroniserad med koden startar Visual Studio automatiskt IntelliSense-byggversioner som bakgrundsaktiviteter som svar på specifika ändringar i projektinställningarna eller i källfilerna.
I vissa fall kanske Visual Studio dock inte uppdaterar IntelliSense-databasen i tid. När du till exempel kör ett git pull eller git checkout -kommando kan det ta upp till en timme för Visual Studio att identifiera ändringar i filerna. Du kan framtvinga en genomsökning av alla filer i en lösning genom att högerklicka på projektnoden i Solution Explorer och välja Genomsöka lösning.
Felsöka IntelliSense-byggfel
En IntelliSense-version skapar inte binärfiler, men den kan fortfarande misslyckas. En möjlig orsak till fel är anpassade .props filer eller .targets filer. I Visual Studio 2017 version 15.6 och senare loggas endast IntelliSense-byggfel i Output-fönstret. Om du vill se dem, ställ in Visa utdata från till Lösning:
Felmeddelandet kan instruera dig att aktivera designtidsspårning:
error: Designtime build failed for project 'E:\src\MyProject\MyProject.vcxproj',
configuration 'Debug|x64'. IntelliSense might be unavailable.
Set environment variable TRACEDESIGNTIME=true and restart
Visual Studio to investigate.
Om du ställer in miljövariabeln TRACEDESIGNTIME på sant och startar om Visual Studio visas en loggfil i %TEMP% katalogen som kan hjälpa dig att diagnostisera byggfelet.
Mer information om TRACEDESIGNTIME miljövariabel finns i Roslyn och design-time-kompileringar. Informationen i dessa artiklar är relevant för C++-projekt.