키워드에 대한 이야기다. 재미있는 것은 왜 이런 생각을 하냐는 것이다. 일반적으로 키워드야 컴파일러가 분석하는데, 사용하는 단어 쯤으로 생각 해도 무리가 없다. 뭐 더 있는가? 키워드 자체가 키워드일 뿐이다.


질문을 통해서 무엇을 생각해 봐야 할지 알아 보자.

1 ) 대부분의 프로그래밍 언어들이, 키워드들을 예약해 두고 프로그램의 식별자로는 사용하지 못하게 하는 이유는 무엇일까?

간단하다. 컴파일러의 파싱을 보다 빠르게, 보다 확실하게 하기 위해서이다. 만약 키워드를 함수나 변수로 쓰게 되면, 이 경우가 키워드인지, 함수인지, 변수인지를 판별하는 로직도 무수히 만들어야 할 것이다.

C++의 키워드들

asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, operator, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template, this, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while

C++의 예약된 키워드들

and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq


2 ) 키워드 auto를 추가하는 것이 C++ 프로그램의 의미론을 어떻게 바꿀까?

전혀 바꾸지 않는다. 하지만 C++ 0x 에서 바뀐다고 하니, 좀 더 지켜봐야 할 것이다.


3 ) register 키워드를 추가하는 것이 C++ 프로그램의 의미론을 어떻게 바꿀까?

register 키워드를 안다는 전재에서 본다면, .. 안쓰는게 좋다. 멀티코어 환경에서 더 어려운 디버깅이 된다. 그렇다고 이게 효과적으로 빠르게 하는것도 아니고. .. ~


총평

...auto 와 register 역시 잘 쓰지 않는 키워드 이다.

posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요