Difference between revisions of "@/fi"
(Created page with "{{@}} <div style="float:left; margin: 0 25px 20px 0; padding:50px; font-size:500%; font-family: Georgia; background-color: #f9f9f9; border: 2px solid #777777;">@</div> Osoit...") |
|||
Line 9: | Line 9: | ||
käytetään [[Compiler directive/fi|kääntäjän ohjetta]] [[sTypedaddress|<syntaxhighlight lang="pascal" enclose="none">{$typedaddress on}</syntaxhighlight>]]. | käytetään [[Compiler directive/fi|kääntäjän ohjetta]] [[sTypedaddress|<syntaxhighlight lang="pascal" enclose="none">{$typedaddress on}</syntaxhighlight>]]. | ||
− | Seuraavassa on esimerkki | + | Seuraavassa on esimerkki, mikä tuottaa tyypittömien osoittimien kanssa kelvollista ja toiminnallista koodia, mutta antaa virheellisen tuloksen: |
<syntaxhighlight lang="pascal" line highlight="12">program untypedAddressDemo(input, output, stderr); | <syntaxhighlight lang="pascal" line highlight="12">program untypedAddressDemo(input, output, stderr); |
Revision as of 18:52, 21 March 2019
│
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:
1program untypedAddressDemo(input, output, stderr);
2
3procedure incrementIntByRef(const ref: PByte);
4begin
5 inc(ref^);
6end;
7
8var
9 foo: integer;
10begin
11 foo := -1;
12 incrementIntByRef(@foo);
13 writeLn(foo);
14end.
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
single characters |
|
character pairs |
|