Dela via


Redigera och omstrukturera C++-kod i Visual Studio

Visual Studio innehåller flera verktyg som hjälper dig att skriva, redigera och omstrukturera koden.

IntelliSense

IntelliSense är ett kraftfullt kodkompletteringsverktyg som föreslår symboler och kodfragment åt dig när du skriver. C++ IntelliSense i Visual Studio körs i realtid, analyserar din kodbas när du uppdaterar den och ger rekommendationer. När du skriver fler tecken begränsas listan med rekommenderade resultat.

Skärmbild av listrutan C plus plus medlem som visar de metoder som är tillgängliga för strängen, till exempel tillägg, tilldelning och så vidare.

Vissa symboler utelämnas automatiskt för att begränsa resultatet. När du till exempel kommer åt ett klassobjekts medlemmar utanför klassen kan du inte se privata medlemmar som standard eller skyddade medlemmar (om du inte är i kontexten för en underordnad klass). Du kan justera filtreringen med hjälp av knapparna längst ned.

När du har valt symbolen i listrutan kan du komplettera den automatiskt med Tabb, Retur eller något av de andra incheckningsteckenen (som standard: { } [ ] ( ) . , : ; + - * / % & | ^ ! = ? @ # \). Om du vill lägga till eller ta bort tecken från den här listan söker du efter "IntelliSense" i Snabbstart (Ctrl + Q) och väljer alternativet Textredigerare > C/C++ > Avancerat . Med alternativet Incheckningstecken för medlemslista kan du anpassa listan med önskade ändringar.

Alternativet Filterläge för medlemslista styr vilka typer av IntelliSense-förslag för automatisk komplettering som du ser. Som standard är den inställd på Fuzzy. Om du har en symbol med namnet MyAwesomeClass i en fuzzy-sökning kan du skriva "MAC" och hitta klassen i dina förslag för automatisk komplettering. Fuzzy-algoritmen anger ett minsta tröskelvärde som symbolerna måste uppfylla för att visas i listan. Smart filtrering visar alla symboler som innehåller delsträngar som matchar det du skrev. Prefixfiltrering söker efter strängar som börjar med det du skrev.

Mer information om C++ IntelliSense finns i Visual C++ IntelliSense och Konfigurera ett C++-projekt för IntelliSense.

IntelliCode

IntelliCode är AI-assisterad IntelliSense. Det placerar den mest sannolika kandidaten högst upp i din slutförandelista. IntelliCode-rekommendationer baseras på tusentals projekt med öppen källkod på GitHub med över 100 stjärnor vardera. I kombination med kontexten för din kod är slutförandelistan skräddarsydd för att främja vanliga metoder.

När du skriver C++, hjälper IntelliCode till när du använder populära bibliotek, till exempel C++-standardbiblioteket. Kodens kontext används för att ge de mest användbara rekommendationerna först. I följande exempel size används medlemsfunktionen ofta med sort funktionen, så den visas överst i resultatlistan.

Skärmbild av listrutan C plus IntelliCode som visar medlemmarna i vektorklassen sorterade efter vilka används oftast i koden.

I Visual Studio 2022 och Visual Studio 2019 är IntelliCode tillgängligt som en valfri komponent i arbetsbelastningen C++ Desktop Development . Om du vill se till att IntelliCode är aktivt för C++, går du till Verktygsalternativ>>IntelliCode>Allmänt och anger C++-basmodell till Aktiverad.

I Visual Studio 2017 är IntelliCode tillgängligt som ett tillägg på Visual Studio Marketplace.

Predictive IntelliSense (experimentell)

Predictive IntelliSense är en experimentell funktion som använder kontextmedvetenhet för att begränsa antalet resultat som visas i listrutan IntelliSense. Algoritmen tillämpar typmatchning så att den endast visar de resultat som matchar den förväntade typen. I det enklaste fallet, om du skriver int x = och anropar listrutan IntelliSense, visas bara heltal eller funktioner som returnerar heltal. Den här funktionen är inaktiverad som standard eftersom den fortfarande är under utveckling. Det fungerar bäst med globala symboler; medlemsfunktioner stöds ännu inte. Du kan aktivera det genom att skriva "Predictive" i Snabbstart eller genom att gå till Verktyg>Alternativ>Textredigerare>C/C++>Experimental>Enable Predictive IntelliSense.

Om du vill åsidosätta Predictive IntelliSense och visa den längre listan trycker du på Ctrl + J. Om Predictive IntelliSense är aktiverat tar filtret Predictive bort genom att anropa Ctrl + J . Om du trycker på Ctrl + J igen tar du bort hjälpmedelsfiltret från medlemslistans resultat där det är relevant. Knappen ([+]) under listrutan IntelliSense gör samma sak som Ctrl + J. Hovra över knappen för att se knappbeskrivningsinformation om vad som visas.

Skärmbild av C plus Predictive IntelliSense.

Föregående skärmbild visar flera knappar under listrutan. Dessa aktiverar IntelliSense-filter för olika typer av resultat:

  • Variabler och konstanter
  • Funktionen
  • Typer
  • Makron
  • Enums
  • Namnområden

En knapp visas endast om den är relevant för din aktuella IntelliSense-session. Du ser vanligtvis inte alla knappar samtidigt.

Mall intelliSense

Mallfältet är ett användargränssnittselement som visas när markören finns i en malldefinition. Det är användbart eftersom du kan ange exempelmallargument för intellisense som visas när du redigerar malltexten. Du kan till exempel ange att ett mallargument är av typen std::vector<int>. När du sedan använder argumentet i malltexten visas medlemmarna std::vector<int>i i intellisense.

Skärmbild av mallfältet med alternativet Lägg till alla befintliga instanser markerat.

<Klicka på T-ikonen> för att expandera/komprimera mallfältet. Klicka på pennikonen eller dubbelklicka på mallfältet för att öppna fönstret Redigera där du anger argumenttyper för parametrarna.

Skärmbild av redigeringsupplevelsen i mallfältet där du anger en typ för varje mallparameter.

Mallfältet kan fylla i parametertyper automatiskt baserat på instansiering av mallen i koden. Klicka på Lägg till alla befintliga instansier för att se en lista över alla konkreta argument som har använts för att instansiera mallen i hela kodbasen.

Skärmbild av mallen IntelliSense-resultat som visar de olika typer som används för att instansiera mallparameterN C, till exempel C = AmbientLight, C = Candle och andra.

Ett fönster längst ned i redigeraren visar var varje instansiation hittades och vilka argumenten var. Du kan välja en instansiering för att gå till platsen i koden där instansieringen hittades.

Skärmbild av listan över instansieringar av mallen i koden. Instansionen, filen, platsen och argumenten visas.

Mallfältets information är användarspecifik. Den lagras i .vs mappen och har inte allokerats till källkontrollen.

Felväxlingar och snabbkorrigeringar

Om redigeraren upptäcker problem med koden lägger den till färgade växlingspunkter under problemet. Röda squiggles anger kod som inte kompileras. Gröna squiggles indikerar andra typer av problem som fortfarande kan vara potentiellt allvarliga. Du kan öppna fönstret Fellista för att få mer information om problemen.

För vissa typer av fel och vanliga kodningsmönster erbjuder redigeraren en snabbkorrigering i form av en glödlampa som visas när du hovrar över växlingsreglaget. Klicka på nedåtpilen för att se förslagen.

I följande exempel deklarerades en vector men ingen definition hittades, så redigeraren erbjuder sig att inkludera den nödvändiga huvudfilen:

Skärmbild av ett fel och den föreslagna snabbkorrigeringen till # include-vektorn.

Redigeraren erbjuder även snabbkorrigeringar för vissa refaktoriseringsmöjligheter. Om du till exempel deklarerar en klass i en rubrikfil erbjuder Visual Studio att skapa en definition för den i en separat .cpp fil.

Skärmbild som visar snabbkorrigeringen med alternativet Skapa definition av Channel Route Iterator i kanaler punkt C P P markerad.

Spårning av ändringar

När du gör en ändring i en fil visas ett gult fält till vänster för att indikera att ändringar som inte har sparats har gjorts. När du sparar filen blir fältet grönt. De gröna och gula staplarna bevaras så länge dokumentet är öppet i redigeraren. De representerar de ändringar som har gjorts sedan du senast öppnade dokumentet.

Skärmbild av C plus ändringsspårning. Ett gult fält nere till vänster verkar indikera ändringar.

Flytta kod

Du kan flytta kodrader upp och ned genom att välja dem, hålla ned Alt och trycka på uppåt -/nedpilen .

Infoga kodfragment

Ett kodfragment är en fördefinierad källkod. Högerklicka på en enskild punkt eller på markerad text och välj Kodfragment för att antingen infoga ett kodfragment eller omge den markerade texten med kodfragmentet. Följande bild visar de tre stegen för att omge en vald instruktion med en for-loop. De gula markerna i den sista bilden är redigerbara fält som du kommer åt med tabbtangenten. Mer information finns i kodfragment.

Skärmbild av kontrollen Infoga kodfragment.

En funktion har valts. I listrutan som visas efter ett högerklicka på funktionsnamnet, Surround With... är markerat i gult. I listrutan Omge med: är kodfragmentet för en "för"-loop valt. Detta resulterar i att en for-loop placeras runt funktionen. Loopvariabeln och gränsen visas i gult för att indikera att de är redigerbara fält.

Lägg till klass

Lägg till en ny klass från Project-menyn eller från snabbmenyn i Solution Explorer:

Skärmbild av dialogrutan Lägg till ny klass. Den har fält för klassnamn, hjälpmedel, filer som ska läggas till i deklarationen och implementeringen och så vidare.

Du kan också använda klassguiden för att ändra eller undersöka en befintlig klass.

Skärmbild av klassguiden med alternativ för att lägga till metoder, medlemsvariabler och mycket mer.

Mer information finns i Lägga till funktioner med kodguider (C++).

Omstrukturera

Refaktoriseringar är tillgängliga under snabbåtgärdens snabbmeny eller genom att klicka på en glödlampa i redigeraren. Vissa finns också på menyn Redigera > refaktor . Dessa funktioner omfattar bland annat:

Kodformatsframtvingande med ClangFormat och EditorConfig

Visual Studio 2017 och senare levereras med inbyggt stöd för ClangFormat, ett populärt kodformateringsverktyg för C++ baserat på Clang/LLVM. Skriv "ClangFormat" i Snabbstart för att ange att det ska använda något av följande vanliga format:

  • LLVM
  • Google
  • Krom
  • Mozilla
  • WebKit
  • Visual Studio

Du kan också ange en egen .clang-format fil eller _clang-format fil för att tillämpa anpassade regler på alla kodfiler på samma nivå eller under.

Filerna kan enkelt delas via källkontroll, så du kan tillämpa kodningskonventioner i hela utvecklingsteamet.

Skärmbild som visar en .clang-formatfil som har många alternativ, till exempel kolumngräns, indragsbredd, flikbredd och så vidare.

Visual Studio 2017 och senare stöder även EditorConfig, som fungerar på ett liknande sätt. ClangFormat har dock fler formatalternativ än EditorConfig, inklusive regler som är specifika för C++. Med EditorConfig skapar du .editorconfig-filer och placerar dem i olika mappar i din kodbas för att ange kodformat för dessa mappar och deras undermappar. En .editorconfig-fil ersätter alla andra .editorconfig-filer i överordnade mappar och skriver över eventuella formateringsinställningar som konfigurerats via Verktygsalternativ>. Du kan ange regler för flikar jämfört med blanksteg, indragsstorlek med mera. Mer information finns i Skapa portabla, anpassade redigeringsprograminställningar med EditorConfig.

Andra formateringsalternativ

Sökrutan Snabbstart är det snabbaste sättet att hitta en inställning eller ett verktyg. Den finns på huvudmenyn. Börja bara skriva så filtrerar listan med automatisk komplettering resultatet.

Skärmbild av sökrutan Snabbstart. Den visar sökning i C plus plus avancerat, vilket resulterar i alternativ för textredigeraren.

Om du vill ange formateringsalternativ som indrag, klammerparenteser och färgläggning skriver du "C++-formatering" i fönstret Snabbstart .

Skärmbild som visar formateringsalternativ för C++, till exempel om du vill dra in automatiskt när du skriver en flik.

Andra formateringsalternativ finns under Redigera>avancerat på huvudmenyn.

Skärmbild som visar avancerade redigeringsalternativ som att visa tomt utrymme, radbyte, kommentera en markering, öka radindrag med mera.

Alternativ för att aktivera och konfigurera C++-specifika redigeringsfunktioner finns under Verktyg Alternativ>>Textredigerare>C/C++. När du har valt vilket alternativ du vill ange kan du få mer hjälp genom att trycka på F1 när dialogrutan är i fokus. För allmänna alternativ för kodformatering skriver du Editor C++ i Snabbstart.

Skärmbild som visar menyalternativet Verktyg i Visual Studio valt och menyalternativet Alternativ markerat.

Experimentella funktioner, som kanske eller kanske inte ingår i en framtida version av Visual Studio, finns i dialogrutan C++ Experimental i textredigeraren . I Visual Studio 2017 och senare kan du aktivera Predictive IntelliSense i den här dialogrutan.

Se även

Läsa och förstå C++-kod
Navigera i C++-kodbasen i Visual Studio
Samarbeta med Live Share för C++