Trigráf (C nyelvek)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. február 28-án felülvizsgált verziótól ; az ellenőrzések 2 szerkesztést igényelnek .

A trigráf (a C nyelvcsaládban ) ( eng.  trigraph ) három karakterből álló sorozat, amelyek közül az első kettő kérdőjel (" ??"), a harmadik pedig a trigráf jelentését jelzi. A trigráfokat a C/C++ előfeldolgozó dolgozza fel .

Trigráf táblázat

trigráf Egyenértékű szimbólum
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~

A három kérdőjel (" ???") kombinációja nem trigráf.

A valóságban a trigráfokat gyakorlatilag nem használják. Egyes fordítók (például a gcc ) még figyelmeztetést is adnak a trigráfok kezelésekor.

Történelem

A trigráfok megjelenésének oka, hogy az 1972 -ben elfogadott, ASCII alapú hétbites ISO/IEC 646 kódlap " " karakterpozíciókat rendelt a nemzeti karakterekhez ( kiegészítő betűk és pénznem szimbólumok ). Például a németek a kódot így láthatták . A hiányzó zárójelek pótlására trigráfokat vezettek be. #$@[\]^`{|}~{ a[i]='\n'; }ä aÄiÜ='Ön'; ü

A Pascalban a digráfokat ugyanerre a célra használják : (. .) (* *)ahelyett [] {}.

A trigráfok elavultak a C++17 szabványban [1] [2] .

Példák váratlan viselkedésre

Az alábbiakban példák láthatók a „ ” trigráf használatára, ??/amelyet a „ ” szimbólum helyettesít \. A " \" karakter egy escape karakter az újsor karakterhez .

// A következő sor végrehajtásra kerül??????????????????/ a ++ ;

??/A " " " " karakterre cserélése után a 2. sorban \lévő kód a++;az 1. sorban megkezdett megjegyzés folytatásának minősül.

/??/ * Egy megjegyzés *??/ /

Miután a „ ” karaktert „ ??/” helyettesíti \, a megadott kód egyenértékű lesz a kóddal

/* Egy komment */

Programpélda

??= include < stdio . h > /* # */ int main ( érvénytelen ) ??< /* { */ charn ?? _ ( 5 ?? ); /* [ és ] */ n ?? ( 4 ?? ) = '0' - ( ?? -0 ?? ' 1 ??! 2 ); /* ~, ^ és | */ printf ( "%c??/n" , n ?? ( 4 ?? )); /* ??/ = \ */ return 0 ; ??>

Lásd még

Jegyzetek

  1. " Trigráfok eltávolítása??! Archiválva : 2018. július 9., a Wayback Machine ”, N3981, Richard Smith, 2014-05-06; [1] Archiválva : 2017. szeptember 8. a Wayback Machine -nél
  2. OpenNews: C++17 szabvány jóváhagyva . opennet.ru Letöltve: 2017. szeptember 7. Az eredetiből archiválva : 2017. szeptember 8..