Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V některých případech možná budete muset ručně nakonfigurovat projekt C++, aby technologie IntelliSense fungovala správně. U projektů MSBuild (na základě souborů .vcxproj) můžete upravit nastavení ve vlastnostech projektu. U projektů jiných než MSBuild upravíte nastavení v CppProperties.json souboru v kořenovém adresáři projektu. V některých případech možná budete muset vytvořit soubor nápovědy, aby IntelliSense lépe porozumělo definicím 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, Visual Studio poskytuje určitou podporu IntelliSense, ale ve výchozím nastavení se nezobrazují vlnovky upozorňující na chyby. 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 hlavičkovými soubory, zvolte v rozevíracím seznamu Build + IntelliSense:
IntelliSense generuje maximálně 1 000 chyb. Pokud je v souborech hlaviček zahrnutých zdrojovým souborem více než 1 000 chyb, zobrazí se na začátku zdrojového souboru pouze jedna chyba.
Ujistěte se, že cesty k souborům #include 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 myši na uzel projektu v Průzkumníku řešení a ujistěte se, že jsou všechny #include cesty správné pro aktuální konfiguraci a platformu. 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.
Pokud chcete zobrazit aktuální hodnoty pro makra sestavení, jako je VC_IncludePath, vyberte rozevírací seznam Zahrnout adresáře . Pak zvolte <Upravit> a vyberte tlačítko Makra.
Projekty Makefile
Pro projekty makefile, které jsou založené na šabloně projektu NMake, zvolte NMake v části Vlastnosti konfigurace a pak zvolte Zahrnout cestu hledání v kategorii IntelliSense :
Projekty CMake
U projektů CMake se ujistěte, že cesty pro #include jsou správně specifikovány pro všechny konfigurace v CMakeLists.txtsouboru. Jiné typy projektů můžou vyžadovat CppProperties.json soubor. Další informace naleznete v tématu Konfigurace navigace v kódu pomocí CppProperties.json. Ujistěte se, že jsou cesty správné pro každou konfiguraci definovanou v souboru.
Pokud v CppProperties.json souboru dojde k chybě syntaxe, technologie IntelliSense v ovlivněných souborech je nesprávná. Visual Studio zobrazí chybu v okně výstupu.
Problémy s analyzátorem značek
Analyzátor značek je flexibilní C++ parser, který se používá pro procházení a navigaci. Je to rychlé, ale nepokouší se úplně pochopit každou konstrukci 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:
Integrované vývojové prostředí (IDE) nabízí vytvoření definice funkce pro funkci, která je již definována.
Pokud navigační panel zobrazuje nejvnitřnější makro, byla aktuální definice funkce přeskočena.
Fragment kódu ukazuje definici makra pro do_if, která se používá uvnitř hlavní funkce. Analyzátor značek makro nerozumí, takže místo rozevíracího seznamu navigace, který ukazuje, že název aktuální funkce je hlavní, zobrazuje název makra: do_if.
Pokud chcete tyto druhy problémů vyřešit, přidejte soubor s názvem cpp.hint do kořenového adresáře řešení. 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, zda kompilátor IntelliSense používá správné možnosti kompilátoru, zahrnující cesty zahrnutí a preprocesorová makra, zapněte diagnostické protokolování příkazových řádků IntelliSense.
Otevřete podokno Nástroje>Možnosti a rozbalte oddíl Všechna nastavení>Jazyky>C/C++>IntelliSense>Protokolování diagnostiky.
Zaškrtněte políčko Zapisovat diagnostické informace do okna výstupu.
Nastavte hodnotu úrovně protokolování na 5 (nejpodrobnější).
Nastavte hodnotu filtru protokolování na hodnotu 8 (protokolování IntelliSense).
Otevřete dialogové okno Nástroje>Možnosti a rozbalte část Textový editor>C/C++>Upřesnit.
Ve skupině Protokolování diagnostiky nastavte možnost Povolit protokolování na hodnotu True.
Nastavte hodnotu úrovně protokolování na 5 (nejpodrobnější).
Nastavte hodnotu filtru protokolování na hodnotu 8 (protokolování IntelliSense).
Vyberte OK.
Okno výstupu teď zobrazuje příkazové řádky předané 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 projektu obsahuje $(MyVariable)\Include, a diagnostický protokol zobrazuje /I\Include jako cestu Include, znamená to, že $(MyVariable) nebyl vyhodnocen a byl odebrán z konečné includované cesty.
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. Například, když spustíte příkaz git pull nebo git checkout, může Visual Studio trvat až hodinu, než zjistí změny ve souborech. Opětovné prohledání všech souborů v řešení můžete vynutit tak, že kliknete pravým tlačítkem myši na projektový uzel v Průzkumníku řešení a zvolíte volbu '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í .props nebo .targets soubory. V sadě Visual Studio 2017 ve verzi 15.6 a novějších se do Okna Výstup protokolují pouze chyby sestavení IntelliSense. Pokud je chcete zobrazit, nastavte Zobrazit výstup z na Řešení:
Chybová zpráva vás může upozornit, abyste povolili trasování během 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 TRACEDESIGNTIME prostředí na true a restartuje visual Studio, zobrazí se v %TEMP% adresáři soubor protokolu, který může pomoct diagnostikovat selhání sestavení.
Další informace o proměnné prostředí TRACEDESIGNTIME najdete v tématu Roslyn a sestavení v době návrhu. Informace v těchto článcích jsou relevantní pro projekty C++.