C언어에서의 삼중자 (Trigraph Sequence)

대문 / 프로그래밍 / C언어에서의 삼중자 (Trigraph Sequence)

C언어에서의 삼중자 (Trigraph Sequence)

1.1. 개요

C언어에서는 삼중자(TrigraphSequence) 라는 전처리기보다 우선하는 치환문자셋이 존재합니다. 이는 일부 언어권 문자셋의 경우 C언어의 문자셋을 모두 받아들이지 못하는 경우가 있기 때문입니다. (대표적으로 ISO646 의 경우 82자의 문자셋을 정의하는데 여기에는 일부 C언어의 문자셋을 수용하지 않고 있습니다.) 이와 같은 경우 C언어의 소스를 표현할수 없게 되기 때문에 이를 보완하고자 삼중자(Trigraph sequence) 라는 것이 존재하게 된 배경입니다. 삼중자는 그 어떤 전처리과정보다 우선하도록 치환되며 총 9가지의 삼중자가 존재합니다. 물음표(?) 2개로 시작하고 한개의 식별문자로 이어져 어떤 다른 문자로 치환되게 되는데 9개는 다음과 같습니다.
??=        #
??(        [
??<        {
??/        \
??)        ]
??>        }
??'        ^
??!        |
??-        ~


만약 아래와 같은 코드가 있다면 '#' 문자를 출력하는것을 볼수 있을겁니다.
printf(">>> ??= <<<\n");


또한 다음과 같은 소스가 있다면
int main(void)
{
    return(0);
}



다음과 같이 삼중자를 사용하여도 동일한 결과를 같는 소스가 됩니다.
int main(void)
??<
    return(0);
??>


gcc 의 경우 "-ansi" 옵션을 주는 경우 삼중자 치환이 됩니다. 그 밖에 이중자(diggraph sequence) 도 있습니다. (이는 ISO C99에 명시되어 있습니다.)
<:             [
:>             ]
<%             {
%>             }
%:             #

1.2. 참고

Retrieved from https://www.minzkn.com:443/moniwiki/wiki.php/TrigraphSequence
last modified 2024-05-17 23:26:16