키워드에 대한 이야기다. 재미있는 것은 왜 이런 생각을 하냐는 것이다. 일반적으로 키워드야 컴파일러가 분석하는데, 사용하는 단어 쯤으로 생각 해도 무리가 없다. 뭐 더 있는가? 키워드 자체가 키워드일 뿐이다.
질문을 통해서 무엇을 생각해 봐야 할지 알아 보자.
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 역시 잘 쓰지 않는 키워드 이다.
'책 정리 > Exceptional C++ Style' 카테고리의 다른 글
항목 33 : 연산자 놀이 ( 난이도 : 4 ) (0) | 2009.02.01 |
---|---|
항목 32 : 오타 또는 C++의 생소한 표기법 (0) | 2009.01.26 |
항목 31 : 이상한 코드 ( 난이도 : 4 ) (2) | 2009.01.26 |
항목 30 : double 과 float ( 난이도 : 4 ) (0) | 2009.01.26 |
항목 29 : 초기화인가 아닌가? ( 난이도 : 3 ) (0) | 2009.01.25 |
항목 27 : 자료 포맷과 효율성, 2부 : 비트 다루기 ( 난이도 : 8 ) (0) | 2009.01.24 |
항목 26 : 자료 포맷과 효율성, 1부 : 간결함 ( 난이도 : 4 ) (0) | 2009.01.24 |
항목 25 : inline 해부 ( 난이도 : 7 ) (0) | 2009.01.23 |
항목 24 : const 최적화 ( 난이도 : 3 ) (0) | 2009.01.23 |
항목 23 : new와 예외, 2부 : 메모리 관리의 실질적인 문제들 ( 난이도 : 5 ) (0) | 2009.01.22 |
최근댓글