En trigraf (i C-familjen av språk ) ( eng. trigraph ) är en sekvens av tre tecken, varav de två första är frågetecken (" ??"), och den tredje anger betydelsen av trigrafen. Trigrafer bearbetas av C/C++-förprocessorn .
trigraf | Motsvarande symbol |
---|---|
??= | # |
??/ | \ |
??' | ^ |
??( | [ |
??) | ] |
??! | | |
??< | { |
??> | } |
??- | ~ |
Kombinationen av tre frågetecken (" ???") är inte en trigraf.
I verkligheten används trigrafer praktiskt taget inte. Vissa kompilatorer (som gcc ) utfärdar till och med en varning när de hanterar trigrafer.
Anledningen till uppkomsten av trigrafer är att den sjubitars kodsidan ISO/IEC 646 , antagen 1972 och baserad på ASCII , tilldelade teckenpositioner " #$@[\]^`{|}~" till nationella tecken ( tilläggsbokstäver och valutasymboler ). { a[i]='\n'; }Till exempel kunde tyskarna se koden som ä aÄiÜ='Ön'; ü. För att ersätta de saknade fästena infördes trigrafer.
I Pascal används digrafer för samma syfte : (. .) (* *)istället för [] {}.
Trigrafer har föråldrats i C++17 - standarden [1] [2] .
Följande är exempel på hur trigrafen " ??/" ersatts med symbolen " \". Tecknet " \" är ett flykttecken för nyradstecknet .
// Kommer nästa rad att köras????????????????????/ a ++ ;Efter att ha ersatt " ??/" med " \" kommer koden a++;på den andra raden att betraktas som en fortsättning på kommentaren som startade på den första raden.
/??/ * En kommentar *??/ /Efter att ha ersatt " ??/" med " \" kommer den angivna koden att motsvara koden
/* En kommentar */