@/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.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
