Trigrafi (C-kielet)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 28. helmikuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 2 muokkausta .

Trigrafi (C-kieliperheessä ) ( eng.  trigraph ) on kolmen merkin sarja, joista kaksi ensimmäistä ovat kysymysmerkkejä (" ??"), ja kolmas osoittaa trigrafin merkityksen. Trigrafit käsitellään C/C++-esiprosessorilla .

Trigrafitaulukko

trigrafia Vastaava symboli
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~

Kolmen kysymysmerkin (" ???") yhdistelmä ei ole trigrafi.

Todellisuudessa trigrafeja ei käytännössä käytetä. Jotkut kääntäjät (kuten gcc ) jopa antavat varoituksen käsitteleessään trigrafioita.

Historia

Syy trigrafien esiintymiseen on se, että vuonna 1972 hyväksytty ja ASCII - pohjainen seitsemänbittinen ISO/IEC 646 -koodisivu määritti merkkipaikat " " kansallisille merkeille ( lisäkirjaimet ja valuuttasymbolit ). Esimerkiksi saksalaiset saattoivat nähdä koodin muodossa . Puuttuvien kiinnikkeiden korvaamiseksi otettiin käyttöön trigrafit. #$@[\]^`{|}~{ a[i]='\n'; }ä aÄiÜ='Ön'; ü

Pascalissa digrafeja käytetään samaan tarkoitukseen : (. .) (* *)sijasta [] {}.

Trigrafit on poistettu käytöstä C++17 - standardissa [1] [2] .

Esimerkkejä odottamattomasta toiminnasta

Seuraavassa on esimerkkejä trigrafin " ??/" käytöstä, joka on korvattu symbolilla " \". Merkki " \" on rivinvaihdon merkinvaihtomerkki .

// Suoritetaanko seuraava rivi??????????????????/ a ++ ;

Kun " " on korvattu tunnuksella ??/" \", 2. rivin koodia a++;pidetään jatkona 1. rivillä aloitetulle kommentille.

/??/ * Kommentti * ?? / /

Kun " " on korvattu ??/kirjaimella " \", määritetty koodi vastaa koodia

/* Kommentti */

Ohjelmaesimerkki

??= sisällyttää < stdio . h > /* # */ int main ( tyhjä ) ??< /* { */ charn ?? _ ( 5 ?? ); /* [ ja ] */ n ?? ( 4 ?? ) = '0' - ( ?? -0 ?? ' 1 ??! 2 ); /* ~, ^ ja | */ printf ( "%c??/n" , n ?? ( 4 ?? )); /* ??/ = \ */ paluu 0 ; ??>

Katso myös

Muistiinpanot

  1. " Trigrafien poistaminen??! Arkistoitu 9. heinäkuuta 2018 Wayback Machinessa ”, N3981, Richard Smith, 2014-05-06; [1] Arkistoitu 8. syyskuuta 2017 Wayback Machinessa
  2. OpenNews: C++17-standardi hyväksytty . opennet.ru Haettu 7. syyskuuta 2017. Arkistoitu alkuperäisestä 8. syyskuuta 2017.