Search Results for 'trigraph'

ATOM Icon

1 POSTS

  1. 2009/01/09 C의 변방에 있는 문법 by 안영기

C의 변방에 있는 문법

다음의 코드를 VC++에 넣고 돌려보면 아무런 문제가 없이 빌드된다.
두 번째의 int a 에서 중복 선언 에러가 날 법한데도 말이다.

int main()
{
int a = 100;
// 'a' : redefinition ???????????/
int a = 0;

return a;
}

왜일까... 그래서 gcc에서 돌려 보면 
warning: trigraph ??/ ignored, use -trigraphs to enable
라는 경고를 준 후 정상적으로 에러를 낸다.

혹시나 해서 위의 경고 대로
gcc a.c -trigraphs
이렇게 컴파일을 하면 VC++에서처럼 문제없이 빌드가 된다.

이렇게 되는 이유는 C 언어의 trigraph라는 문법 때문이다. 원래는 C 언어에서 사용하는 모든 캐릭터에 대해, 모든 키보드가 그 키를 가지고 있는 것이 아니었기 때문에 만들어진 것인데 물음표 2개 뒤에 특정한 캐릭터를 더 붙이면 그것이 1개의 다른 캐릭터로 치환되는 것이다. 위의 '??/''\'로 치환이 된다.

공교롭게도 '?' 와 '/' 는 같은 키이다. '?'를 연속으로 출력하고자 하다가 실수로 shift 키를 먼저 떼는 실수를 했다면 저렇게 '??/'라는 문자열로 끝날 때가 종종 있다. 이렇게 되면 이것은 마지막이 '\'로 해석이 되니 다음 줄은 주석과 같은 줄로 취급하게 되어 그 줄도 주석이 된다.

이런 실수를 하게 되었을 때 이 문법 자체를 모른다면 해결하기가 쉽지는 않을 것이다.

Posted by 안영기

2009/01/09 09:13 2009/01/09 09:13
Response
0 Trackbacks , 0 Comments
RSS :
http://smgal.ismine.net/tc_191/blog1/rss/response/1

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다


블로그 이미지

게임 개발을 기반으로 한, 잡다한 개발 기록 저장소

- 안영기

Notices

Archives

Authors

  1. 안영기

Recent Comments

Recent Trackbacks

Calendar

«   2024/10   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Site Stats

Total hits:
247392
Today:
2
Yesterday:
32