Ange när och var en anteckning ska tillämpas

När en anteckning är villkorsstyrd kan det kräva andra anteckningar för att ange detta för analysatorn. Om en funktion till exempel har en variabel som kan vara synkron eller asynkron fungerar funktionen så här: I det synkrona fallet lyckas den alltid så småningom, men i det asynkrona fallet rapporterar den ett fel om den inte kan lyckas omedelbart. När funktionen anropas synkront ger kontrollen av resultatvärdet inget värde till kodanalysatorn eftersom den inte skulle ha returnerats. Men när funktionen anropas asynkront och funktionsresultatet inte kontrolleras kan ett allvarligt fel inträffa. Det här exemplet illustrerar en situation där du kan använda anteckningen _When_ – som beskrivs senare i den här artikeln – för att aktivera kontroll.

Strukturella anteckningar

Om du vill styra när och var anteckningar gäller använder du följande strukturella anteckningar.

Anteckning Beskrivning
_At_(expr, anno-list) expr är ett uttryck som ger ett lvalue. Anteckningarna i anno-list tillämpas på objektet som namnges av expr. För varje annotering i anno-list tolkas expr i förhandsvillkor om annoteringen tolkas i förhandsvillkor, och i eftervillkor om annoteringen tolkas i eftervillkor.
_At_buffer_(expr, iter, elem-count, anno-list) expr är ett uttryck som ger ett lvalue. Anteckningarna i anno-list tillämpas på objektet som namnges av expr. För varje anteckning i anno-list, tolkas expr i förhandsvillkor om anteckningen tolkas i förhandsvillkor, och i eftervillkor om anteckningen tolkas i eftervillkor.

iter är namnet på en variabel som är begränsad till anteckningen (inklusive anno-list). iter har en implicit typ long. Identiskt namngivna variabler i alla omslutande omfång är dolda från utvärdering.

elem-count är ett uttryck som utvärderas till ett heltal.
_Group_(anno-list) Anteckningarna i anno-list anses alla ha någon kvalificerare som gäller för den gruppanteckning som tillämpas på varje anteckning.
_When_(expr, anno-list) expr är ett uttryck som kan konverteras till bool. När det inte är noll (true) anses anteckningarna som anges i anno-list vara tillämpliga.

Som standard tolkas för varje anteckning i anno-list, expr som att använda indatavärdena om anteckningen är en förutsättning och som att använda utdatavärdena om anteckningen är ett eftervillkor. Om du vill åsidosätta standardvärdet kan du använda det _Old_ inbyggda när du utvärderar ett eftervillkor för att ange att indatavärden ska användas. Not: Olika anteckningar kan aktiveras som en följd av att använda _When_ om ett föränderligt värde, till exempel *pLength, är inblandat eftersom det utvärderade resultatet av expr förhandsvillkoret kan skilja sig från dess utvärderade resultat i post-condition.

Se även