C++ 표준의 한글 식별자 제한

Twitter icon류광, 2004-10-11 16:10

유효한 식별자에 관련해서 C++ 표준(14882:1998)을 보다가 좀 이상한 부분을 발견했습니다.

2.10 절을 보면 C++ 식별자는 기본적으로 nondigit(숫자가 아닌 글자들)과 digit들로 구성된다고 나와 있구요. nondigit에는 알파벳 대소문자 뿐만 아니라 universal-character-name도 가능하다고 되어 있네요.

universal-character-name은 표준의 Annex E에 있는데, Hangul 항목을 보니 유니코드 1100-1159, 1161-11a2, 11a8-11f9만 지정되어 있네요. 이 문자들은 한글의 자음, 모음 낱자들이고(ㄱ,ㄴ,ㄷ, ㅏ,ㅑ 등) 우리가 일상적으로 쓰는 한글 글자들에는 해당하지 않습니다. (http://www.unicode.org/charts/ 참고.)

뭐 사실 C++ 코드에서 영문 알파벳 이외의 글자를 식별자에 사용하는 경우는 거의 못봤고 도구들이 그런 문자들을 어느 정도 지원하는지도 잘 모르겠지만, 그래도 표준 자체에 저렇게 제한되어 있는 것은 좀 그렇네요. 만일 컴파일러나 링커가 한글 식별자를 지원한다고 해도, 현재 표준에서는 '풀어쓰기'를 해야 합니다.

혹시 2003년도 개정표준에는 다르게 되어 있는지? 14882:2003 문서 가지고 있는 분 확인을 좀 부탁합니다...

2005-03-13 추가:

표준에 나온 한글 코드들은 소위 '첫가끝' 코드이고, 이를 지원하는 입력기, 편집기, 글꼴(풀어쓰기가 아니라 모아쓰기로)도 있다고 합니다. 또한 완성형이나 조합형 대신 이 코드 체계로 가는 게 한글을 온전히, 효과적으로, 또 효율적으로 사용할 수 있는 길이라는 주장도 있고, 저도 동감합니다...

다만 C++ 표준이 애초에 그런 점을 고려했던 것인지는 잘 모르겠습니다. 그리고 첫가끝을 지원하는 환경이 일반적이지도 않구요...

태그: 프로그래밍 C++

comments powered by Disqus