Trigraf (v rodině jazyků C ) ( angl. trigraph ) je posloupnost tří znaků, z nichž první dva jsou otazníky (" ??") a třetí označuje význam trigrafu. Trigrafy jsou zpracovávány preprocesorem C/C++ .
trigraf | Ekvivalentní symbol |
---|---|
??= | # |
??/ | \ |
??' | ^ |
??( | [ |
??) | ] |
??! | | |
??< | { |
??> | } |
??- | ~ |
Kombinace tří otazníků (" ???") není trigraf.
Ve skutečnosti se trigrafy prakticky nepoužívají. Některé kompilátory (například gcc ) dokonce vydávají varování při práci s trigrafy.
Důvodem pro výskyt trigrafů je to, že sedmibitová kódová stránka ISO/IEC 646 přijatá v roce 1972 a založená na ASCII přiřazovala pozice znaků " #$@[\]^`{|}~" národním znakům ( doplňková písmena a symboly měn ). { a[i]='\n'; }Například Němci mohli vidět kód jako ä aÄiÜ='Ön'; ü. K nahrazení chybějících závorek byly zavedeny trigrafy.
V Pascalu se digrafy používají ke stejnému účelu : (. .) (* *)místo [] {}.
Trigrafy byly ve standardu C++17 zastaralé [1] [2] .
Následují příklady použití trigrafu „ ??/“ nahrazeného symbolem „ \“. Znak " \" je únikový znak pro znak nového řádku .
// Bude proveden další řádek????????????????????/ a ++ ;Po nahrazení " ??/" za " \" bude kód a++;na 2. řádku považován za pokračování komentáře zahájeného na 1. řádku.
/??/ * Komentář * ?? / /Po nahrazení „ ??/“ za „ \“ bude zadaný kód ekvivalentní kódu
/* Komentář */