#keywords 삼중자,이중자,치환,C,TrigraphSequence,DiggraphSequence #title C언어에서의 삼중자 (Trigraph Sequence) [wiki:Home 대문] / [wiki:CategoryProgramming 프로그래밍] / [wiki:TrigraphSequence C언어에서의 삼중자 (Trigraph Sequence)] ---- == [wiki:TrigraphSequence C언어에서의 삼중자 (Trigraph Sequence)] == * 작성자 조재혁([mailto:minzkn@minzkn.com]) * 고친과정 2008년 4월 30일 : 처음씀 [[TableOfContents]] === 개요 === [wiki:LanguageC C언어]에서는 삼중자(TrigraphSequence) 라는 전처리기보다 우선하는 치환문자셋이 존재합니다. 이는 일부 언어권 문자셋의 경우 [wiki:LanguageC C언어]의 문자셋을 모두 받아들이지 못하는 경우가 있기 때문입니다. (대표적으로 ISO646 의 경우 82자의 문자셋을 정의하는데 여기에는 일부 [wiki:LanguageC C언어]의 문자셋을 수용하지 않고 있습니다.) 이와 같은 경우 [wiki:LanguageC C언어]의 소스를 표현할수 없게 되기 때문에 이를 보완하고자 삼중자(Trigraph sequence) 라는 것이 존재하게 된 배경입니다. 삼중자는 그 어떤 전처리과정보다 우선하도록 치환되며 총 9가지의 삼중자가 존재합니다. 물음표(?) 2개로 시작하고 한개의 식별문자로 이어져 어떤 다른 문자로 치환되게 되는데 9개는 다음과 같습니다. {{{#!enscript c ??= # ??( [ ??< { ??/ \ ??) ] ??> } ??' ^ ??! | ??- ~ }}} 만약 아래와 같은 코드가 있다면 '#' 문자를 출력하는것을 볼수 있을겁니다. {{{#!enscript c printf(">>> ??= <<<\n"); }}} 또한 다음과 같은 소스가 있다면 {{{#!enscript c int main(void) { return(0); } }}} 다음과 같이 삼중자를 사용하여도 동일한 결과를 같는 소스가 됩니다. {{{#!enscript c int main(void) ??< return(0); ??> }}} gcc 의 경우 "-ansi" 옵션을 주는 경우 삼중자 치환이 됩니다. 그 밖에 이중자(diggraph sequence) 도 있습니다. (이는 ISO C99에 명시되어 있습니다.) {{{#!enscript c <: [ :> ] <% { %> } %: # }}} === 참고 === * [^http://en.wikipedia.org/wiki/C_trigraph] * ISO/IEC 9899:1999 (C99)