Under de senaste veckorna har ett antal användare informerat oss om att de har stött på felsökning av en villkorad C-nummersammansättning.
Godkänd: Fortect
I C #, gå till fliken Bygg i den vänstra rutan i alla egenskapsblad och välj sedan hur du ska inspektera rutorna i kompilatoralternativen. Ta bort alla granskningsposter för de inställningar du vill hjälpa dig att inaktivera. Placera en villkorlig kompilatorbrytare på min samtalslinje. Kompilatorn kommer att inkludera spårning, känd som debug-kod, till den körbara filen.
- 20 minuter att läsa.
Även om en kompilator inte har en dedikerad förprocessor, behandlas mina direktiv som beskrivs i detta avsnitt precis som om det fanns en. Du använder dem för att underlätta villkorlig insamling. Till skillnad från C C ++ och dessutom direktiv kan du inte använda dessa direktiv för att bygga upp makron. Ett förprocessordirektiv kan endast bestå av enradsklasser.
Nullbar kontext
Godkänd: Fortect
Fortect är världens mest populära och effektiva PC-reparationsverktyg. Det litar på miljontals människor för att hålla sina system igång snabbt, smidigt och felfritt. Med sitt enkla användargränssnitt och kraftfulla skanningsmotor hittar och fixar Fortect snabbt ett brett utbud av Windows-problem – från systeminstabilitet och säkerhetsproblem till minneshantering och prestandaflaskhalsar.
Förprocessorinformationen #nullable
ställer in en persons nullbara kontextanteckning som det nullbara varningsramverket. Detta direktiv kontrollerar om nullbara rrf-kommentarer tenderar att vara i kraft och nullbara meddelanden beviljas. Varje sammanhang är antingen inaktiverat eller aktiverat.
Båda sammanhangen kan anges som ett tillhandahållande på projektnivå (utanför C-nummerkod). #nullable
-satsen styr hur hela sammanhanget för kommentarer och varningar och behöver företräde framför inställningar på projektnivå. Ett direktiv skapar vanligtvis kontexten som styr det tills en annan instruktion har företräde över den, eller tills den källfilens vind.
-
#nullable stäng av
: Inaktiverar varningar och nullbara annoteringskontexter. -
#nullable enable
: Anger en nollbar annoteringstips och de sammanhang som ska aktiveras. -
#nullable restore
: återställ nullbar varning och även annoteringskontext i projektinställningar. -
#nullable wipe off Anteckningar
: Ställer in anteckningskontexten så att den råkar vara nullbar för att hjälpa dig inaktivera den. -
#nullable enable Anteckningar
: aktiverar anteckningsmiljön och utelämnar NULL-värdet. -
#nullable återställningskommentarer
: återställ vår persons nollbara sammanhangsanteckning i projektinställningar. -
nummer Eliminera nullbara varningar
: Inaktivera nullbara kontextvarningar. -
#nullable warnings
: enable Aktiverar en nullbar varning. -
#nullable återställningsvarningar
: återställ de nuvarande nullbara varningarna i våra sammanhangsprojektinställningar.
Villkorlig kompilering
-
#if
: Öppnar villkorlig kompilering, där koden i sin tur kompileras endast om den angivna symbolen är nästan säkert definierad. -
#elif
: stänger den tidigare villkorliga kompileringen och bryter en ny villkorlig kompilering baserat på vad som råkar vara definierat i den angivna symbolen. -
#else
: stäng före villkorlig kompilering och öppna vår egen resulterande villkorliga kompilering om ingen tidigare specificerad envision är definierad. -
#endif
: Stäng all tidigare beroende kompilering.
Om C-nummerkompilatorn hittar en observerbar #if
information, kanske genom att använda #endif
direktivet, skulle den säkerligen kompilera koden mellan direktiven som om den hade angetts. symbolen är definierad. Till skillnad från C C ++ kan du inte tilldela ett numeriskt värde till det specifika tecknet. #if
-satsen i C # är boolesk och kontrollerar bara om din karaktär inte är specificerad eller inte. Till exempel:
#if DEBUG Console .WriteLine ("Debug version");#slut om
Du kan använda ==
(equality) och vilken hoppa över ! lika med (olikhet)
för att fråga efter bool
true
kombinerat med falska
-värden. true
betyder att den exakta symbolen är definierad. #if DEBUG
-satsen har samma betydelse som #if (DEBUG True)
==. Du kan använda &&
(och) , <. använd kod> || (eller) , men !
(inte) operatorer för att utvärdera om flera alfabet är definierade. ibland grupp tecken och operatorer samt parenteser?
#if
, mestadels utrustad med #else
, #elif
, #endif
, # definiera
och därför specifika #undef
-direktiv, kan du inkluderaLägg till dem som är etablerade på närvaron av en eller flera mönster, eller exkludera kuponger. Villkorlig kompilering kan vara ovärderlig när du kompilerar kod för din felsökningsversion eller bara kompilerar en enda konfiguration.
Ett villkorligt försöksdirektiv med någon typ av #if
-information måste uttryckligen sluta med ett exceptionellt #endif
-direktiv. Med #define
kan dina behov definiera en viktig symbol. När du använder ett användningstecken som ett specifikt uttryck angående #if
-direktivet, undersöks ditt uttryck till true
. Du kan definiera hela symbolen med hjälp av parameterkompilatorn DefineConstants . Du kan ersätta logotypen med bilden #undef
. Symbolens nivå beror på #define
med hjälp av är filen den definierades till. Tecknet a som du definierar med DefineConstants eller #define
kan inte komma i konflikt med en helt ny variabel med samma namn. Ett variabelföretag namn får inte skickas till en förbehandlare instruktion, eller ett tecken kan bara utvärderas på en förbehandlare direktivprocess.
Med
#elif
du kan odla ett villkorligt A-sammansatt direktiv. Uttrycket #elif
kan mycket väl utvärderas i händelse av att varken föregående #if
eller någon individ av de valfria föregående orden och fraserna som är involverade i #elif
-direktivet utvärderas, får till slut true
. Om namnet #elif
utvärderas till true
, utvärderar vanligtvis kompilatorn nästan koden mellan typen #elif
i nästa villkorliga direktiv. Till exempel:
#define VC7// ...# vid felsökning Console.Build ");#elif Writeline ("felsöka VC7 Console.WriteLine ("Visual Studio 7");#slut om
#else
tillåter vem som helst att skapa ett sammansatt villkorsdirektiv, så varför men om inget av uttrycken i det förflutna #if < /code> eller (valfritt)
. # elif Jämför
och jämför dem med viktiga
, kompilatorn utvärderar varje enskild kod med hänsyn till #else
och nästa < code> #endif #endif
(#endif) bör vara den efterföljande kommandoförprocessorn efter #else
.
#endif
indikerar slutet på alla beroende direktiv som börjar med vårt eget #if
direktiv.
Byggsystemet betalar också koncentration till fördefinierade förprocessorsymboler som representerar otaliga målkortsformer i projekt i SDK-stil. De är användbara när du bygger applikationer som är inriktade på flera typer av .NET.
Målsupport | tecken |
---|---|
.NET Framework | NETFRAMEWORK , NET48 , NET472 , NET471 , NET47 , > NET461 , net462 , NET46 , NET452 , NET451 , NET45 >, NET40 , NET35 , NET20 |
.NET-standard | NETSTANDARD , N |