Konfigurace projektu C++ pro IntelliSense

V některých případech možná budete muset ručně nakonfigurovat projekt C++, aby technologie IntelliSense fungovala správně. U projektů MSBuild (založených na souborech .vcxproj) můžete upravit nastavení ve vlastnostech projektu. U projektů jiných než MSBuild upravíte nastavení v souboru CppProperties.json v kořenovém adresáři projektu. V některých případech možná budete muset vytvořit soubor nápovědy, který intelliSense pomůže pochopit definice maker. Integrované vývojové prostředí sady Visual Studio vám pomůže identifikovat a opravit problémy s Technologií IntelliSense.

IntelliSense s jedním souborem

Když otevřete soubor, který není součástí projektu, sada Visual Studio poskytuje podporu intelliSense, ale ve výchozím nastavení se nezobrazují žádné vlnovky chyb. Pokud navigační panel říká Různé soubory, pak to pravděpodobně vysvětluje, proč se pod nesprávným kódem nezobrazují vlnovky chyb nebo proč není definováno makro preprocesoru.

Kontrola seznamu chyb

Pokud se soubor neotevře v režimu s jedním souborem a IntelliSense nefunguje správně, je prvním místem, kde zkontrolujete okno Seznam chyb. Pokud chcete zobrazit všechny chyby IntelliSense pro aktuální zdrojový soubor společně se všemi zahrnutými soubory hlaviček, zvolte v rozevíracím seznamu Build + IntelliSense :

VC++ IntelliSense in Error List

IntelliSense generuje maximálně 1 000 chyb. Pokud je v souborech hlaviček zahrnutých zdrojovým souborem více než 1000 chyb, zobrazí se na začátku zdrojového souboru pouze jedna chyba.

Ujistěte se, že #include cesty jsou správné.

Projekty MSBuild

Pokud spustíte sestavení mimo integrované vývojové prostředí sady Visual Studio a vaše sestavení budou úspěšná, ale IntelliSense je nesprávná, je možné, že se příkazový řádek nesynchronizuje s nastavením projektu pro jednu nebo více konfigurací. Klikněte pravým tlačítkem na uzel projektu v Průzkumník řešení a ujistěte se, že jsou pro aktuální konfiguraci a platformu správné všechny cesty #include. Pokud jsou cesty ve všech konfiguracích a platformách stejné, můžete vybrat všechny konfigurace a všechny platformy a ověřit správnost cest.

VC++ Include Directories

Pokud chcete zobrazit aktuální hodnoty pro makra sestavení, jako je VC_IncludePath, vyberte řádek Zahrnout adresáře a klikněte na rozevírací seznam vpravo. Pak zvolte <Upravit> a klikněte na tlačítko Makra .

Projekty makefile

V případě projektů makefile založených na šabloně projektu NMake zvolte v levém podokně NMake a pak v kategorii IntelliSense zvolte Zahrnout cestu hledání:

Makefile project include paths

Projekty Otevřít složku

U projektů CMake se ujistěte, že jsou správně zadány #include cesty pro všechny konfigurace v souboru CMakeLists.txt. Jiné typy projektů můžou vyžadovat soubor CppProperties.json. Další informace najdete v tématu Konfigurace IntelliSense pomocí CppProperties.json. Ujistěte se, že jsou cesty správné pro každou konfiguraci definovanou v souboru.

Pokud v souboru CppProperties.json dojde k chybě syntaxe, technologie IntelliSense v ovlivněných souborech bude nesprávná. Visual Studio zobrazí chybu v okně výstupu.

Problémy s analyzátorem značek

Analyzátor značek je analyzátor jazyka C++, který se používá k procházení a navigaci. Je to velmi rychlé, ale nepokoušá se úplně pochopit každý konstruktor kódu.

Například nevyhodnocuje makra preprocesoru, a proto může nesprávně analyzovat kód, který je velmi využívá. Když analyzátor značek narazí na neznámý konstruktor kódu, může přeskočit celou oblast kódu.

Existují dva běžné způsoby, kterými se tento problém projevuje v sadě Visual Studio:

  1. Pokud navigační panel zobrazuje nejvnitřnější makro, přeskočila se aktuální definice funkce:

    Tag parser skips function definition

  2. Integrované vývojové prostředí (IDE) nabízí vytvoření definice funkce pro funkci, která je již definována:

    Tag parser offers to define existing function

Pokud chcete tyto druhy problémů vyřešit, přidejte do kořenového adresáře řešení soubor s názvem cpp.hint . Další informace naleznete v tématu Soubory nápovědy.

Chyby analyzátoru značek se zobrazí v okně Seznam chyb.

Ověření nastavení projektu pomocí protokolování diagnostiky

Pokud chcete zkontrolovat, jestli kompilátor IntelliSense používá správné možnosti kompilátoru, včetně maker Include Paths a Preprocessor, zapněte diagnostické protokolování příkazového řádku IntelliSense v textovém editoru > Možností > nástroje > C/C++ > Rozšířené > protokolování diagnostiky. Nastavte povolit protokolování na hodnotu True, úroveň protokolování na 5 (většina podrobných) a filtr protokolování na hodnotu 8 (protokolování IntelliSense).

Okno výstupu teď zobrazí příkazové řádky, které se předají kompilátoru IntelliSense. Tady je ukázkový výstup:

[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

Tyto informace vám můžou pomoct pochopit, proč IntelliSense poskytuje nepřesné informace. Pokud například adresář Include vašeho projektu obsahuje $(MyVariable)\Include a diagnostický protokol zobrazuje /I\Include jako cestu include, znamená to, že $(MyVariable) nebyl vyhodnocen a odebrán z konečné cesty zahrnutí.

Informace o sestavení IntelliSense

Visual Studio používá vyhrazený kompilátor C++ k vytvoření a údržbě databáze, která využívá všechny funkce IntelliSense. Aby byla databáze IntelliSense synchronizovaná s kódem, Visual Studio automaticky spustí sestavení jen intelliSense jako úlohy na pozadí v reakci na určité změny provedené v nastavení projektu nebo zdrojových souborech.

V některých případech ale Visual Studio nemusí databázi IntelliSense aktualizovat včas. Když například spustíte příkaz git pull nebo git checkout , může visual Studio trvat až hodinu, než zjistí změny v souborech. Opakované prohledání všech souborů v řešení můžete vynutit tak, že kliknete pravým tlačítkem na uzel projektu v Průzkumník řešení a zvolíte Znovu prohledat řešení.

Řešení potíží se selháními sestavení IntelliSense

Sestavení IntelliSense negeneruje binární soubory, ale může selhat. Jednou z možných příčin selhání je vlastní soubory .props nebo .targets. V sadě Visual Studio 2017 verze 15.6 a novějších se do okna Výstup protokolují chyby sestavení jen pro IntelliSense. Pokud je chcete zobrazit, nastavte zobrazit výstup z řešení:

Output window for solution errors

Chybová zpráva vás může instruovat, abyste povolili trasování v době návrhu:

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.

Pokud nastavíte proměnnou prostředí TRACEDESIGNTIME na true a restartuje Visual Studio, zobrazí se v adresáři %TEMP% soubor protokolu, který může pomoct diagnostikovat selhání sestavení.

Další informace o proměnné prostředí TRACEDESIGNTIME najdete v tématu Roslyn a Common Project System. Informace v těchto článcích jsou relevantní pro projekty C++.