@/fi

From Free Pascal wiki

English (en) suomi (fi) français (fr) русский (ru)

@

Osoiteoperaattori @ palauttaa muuttujan, aliohjelman tai funktion osoitteen.

Normaalisti @ palauttaa tyypittömän osoittimen arvon. Jos käsittellään osoittimia paljon ja halutaan vähentää virheitä jotka johtuvat viittauksista väärään tyyppiseen kohteeseen käytetään kääntäjän ohjetta {$typedaddress on}.

Seuraavassa on esimerkki, mikä tuottaa tyypittömien osoittimien kanssa kelvollista ja toiminnallista koodia, mutta antaa virheellisen tuloksen:

 1 program untypedAddressDemo(input, output, stderr);
 2 
 3 procedure incrementIntByRef(const ref: PByte);
 4 begin
 5 	inc(ref^);
 6 end;
 7 
 8 var
 9 	foo: integer;
10 begin
11 	foo := -1;
12 	incrementIntByRef(@foo);
13 	writeLn(foo);
14 end.

Tarkoituksena oli, että 0 (nolla) tulostuu, mutta ohjelma tulostaa -256. Kun lisätään koodiin {$typedaddress on} niin käätäminen keskeytyy yhteensovittomaan tyyppivirheeseen. Tavallisesti halutaan viimeksi mainittu käyttäytyminen (käännösaikainen virhe) sen sijaan, että tuhlataan aikaa tuntikausia virheenkorjaukseen.

Muita huomautuksia

  • ASCII:ssa merkin @ (AT merkki): arvo on 64.

Lisää aiheesta


navigation bar: topic: Pascal symbols
single characters

+ (plus)  •  - (minus)  •  * (asterisk)  •  / (slash)
= (equal)  •  > (greater than)  •  < (less than)
. (period)  •  : (colon)  •  ; (semi colon)
^ (hat)  •  @ (at)
$ (dollar sign)  •  & (ampersand)  •  # (hash)
' (single quote)

character pairs

<> (not equal)  •  := (becomes)  •  >< (symmetric difference)  •  // (double slash)