@/fi
English · Français · Suomi · Русский
@
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:
program untypedAddressDemo(input, output, stderr);
procedure incrementIntByRef(const ref: PByte);
begin
inc(ref^);
end;
var
foo: integer;
begin
foo := -1;
incrementIntByRef(@foo);
writeLn(foo);
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 on64.
Lisää aiheesta
From the Free Pascal wiki, page "@/fi", as it stood on 2022-08-06 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.