En trigraf (i C-familien af sprog ) ( eng. trigraph ) er en sekvens af tre tegn, hvoraf de to første er spørgsmålstegn (" ??"), og den tredje angiver betydningen af trigrafen. Trigrafer behandles af C/C++ præprocessoren .
trigraf | Tilsvarende symbol |
---|---|
??= | # |
??/ | \ |
??' | ^ |
??( | [ |
??) | ] |
??! | | |
??< | { |
??> | } |
??- | ~ |
Kombinationen af tre spørgsmålstegn (" ???") er ikke en trigraf.
I virkeligheden bruges trigrafer praktisk talt ikke. Nogle compilere (såsom gcc ) udsender endda en advarsel, når de håndterer trigrafer.
Årsagen til fremkomsten af trigrafer er, at syv-bit kodetabel ISO/IEC 646 , der blev vedtaget i 1972 og baseret på ASCII , tildelte tegnpositioner " #$@[\]^`{|}~" til nationale tegn ( supplerende bogstaver og valutasymboler ). { a[i]='\n'; }For eksempel kunne tyskerne se koden som ä aÄiÜ='Ön'; ü. For at erstatte de manglende beslag blev der indført trigrafer.
I Pascal bruges digrafer til samme formål : (. .) (* *)i stedet for [] {}.
Trigrafer er blevet forældet i C++17 - standarden [1] [2] .
Følgende er eksempler på brug af trigrafen “ ??/” erstattet af symbolet “ \”. Tegnet " \" er et escape-tegn for linjeskifttegnet .
// Vil den næste linje blive udført????????????????????/ a ++ ;Efter at have erstattet " ??/" med " \", vil koden a++;i 2. linje blive betragtet som en fortsættelse af kommentaren startet i 1. linje.
/??/ * En kommentar *??/ /Efter at have erstattet “ ??/” med “ \”, vil den angivne kode svare til koden
/* En kommentar */