이번 항목부터 40 항목까지 스타일에 대한 이야기를 한다. 1 ) 명료하고 이해하기 쉬운 코드는 누구에게 도움이 될까? 당연히 누구에게나 도움이 된다. 그 중 가장 도움이 되는 사람은 바로 자기 자신일 것이다. 예전에도 그랬고 지금도 그런데, 일화로 3주일 전에 짠 코드를 다시 볼 일이 생겼었다. 코드를 보니, 최적화를 한다고 여기 저기 if 들이 있었고, 변수명과 함수명으로는 도저히 감을 못잡겠다. 더군다나 어떻게 돌아가는지 몰라서, 결국 실행해 보면서 코드를 쫒아 보는 사태가 발생했다. .. 이 경험을 통해서 한가지 교훈을 얻게 되었는데, "나 때문에 코드를 간단하게 만들자." 로 되었다. 2 ) 다음 코드는 기존 컨테이너들에 대한 색인 테이블 생성을 위한 흥미롭고 유용한 관용구를 보여준다. 색인 테..
분류 전체보기 검색 결과
이번 항목은 C++의 문법 연습이라 할 수 있겠다. 기본적으로 C++ 컴파일러가 여러 기호들을 해석하는 규칙을 알아야 생각해 볼 수 있을 것이다. 컴파일러는 기본적으로 토큰을 최대한 길게 잡는다. 왜냐하면 이것은 보다 빠른 파싱의 기본 원리이기 때문이다. 만약 토큰을 최소 단위로 한다면, 파싱이 더 어려워져서 컴파일 타임이 정말 길어 질 것이다. 비유를 한다면, 책을 책장에 넣으려 할 때, 책을 크기 순으로 넣게 되면, 크기로도 책을 손 쉽게 찾을 수 있다. 물론 이름 순으로 정리해도 되고, 장르순으로도 정리해도 된다. ^^( 컴퓨터는 아무래도 크기 순이 더 편할 듯 하다. ) 1 ) 하나의 유효한 C++ 프로그램에서, 더하기 기호(+)가 연달아(중간에 빈칸 없이) 나올 수 있는 최대 개수는 몇개인가? ..
1 장 C++ 프로그래머와 초심자 제위에게 고함 1.1.1 이 책은... 이 책은, 도입부, 1부 ~ 4부 그리고 부록 으로 구분되어 있다. 이 책은, 알고리즘 작성보다는 프로그램 구성에 더 무게를 둔 책이다. 그러므로 어려운 알고리즘에 대한 이야기가 나온다면 더 단순하고 더 설명하기 좋은것으로 대체해서 설명한다고 한다. 그래서, 책에서의 전반적인 예제는 실무 코드 같지 않다고 한다. 1.1.2 연습문제가... 있는데, 난이도 *1 가 10분 걸렸다면 *2 는 1시간 *3 은 하루짜리 난이도라고 생각하면 된다. 사람에 따라 다르니, 연습문제가 있고, 풀어 보라는 식으로 설명 한다. 1.1.3 이 책의 C++ 코드는 표준이다. 표준안 1998, 2003에 정의한 표준 C++ 이다, 많은 컴파일러들에서 테스..
이번 항목의 표기법을 보고 참으로 놀라웠다 " 아니!? 이런 표기법도 있었다니, 이런건 보통 안쓰잖아!?" 라고 생각했는데, 이번 항목의 주제가 바로 이것이다. "이런 생소한 표기법 쓰지마!" .. 란 표현도 되겠고, "이런 표현도 있으니 조심해" 란 표현도 알맞을 것 같다. 1 ) 표준을 따르는 C++ 컴파일러를 사용 한다고 했을 때, 다음 프로그램은 무엇을 출력하는가? #include #include int main( void ) { int x = 1; for( int i = 0; i < 100; ++i ); // 다음 줄은 무엇을 할까? 증가????????????????????/ ++x; std::cout p[2]; }; }; int main( void ) { return 0; } 여기서 나는 9 ..
이번 항목에서 말하고자 하는 것을 정확히 겪어 본 터라, 책의 예제는 생략하고, 경험담만 쓰려고 한다. 이번 항목은 #define 의 단점을 정확히 지적을 한다. 경험 1. 졸업 작품 만드는 중 KGCA15기 동기인 강일이형이 "도저히 디버깅을 할 수가 없는데, 좀 봐봐" 라고 하면서 코드를 보여 줬다. 이상이 없는 코드인데, 컴파일이 되지 않는 것이 문제점이 였다. 에러 메세지를 봐도, "이 문구의 에러가 아닌데 왜 이러는거야!" 라고 속으로 생각하다가, 혹시나 하고, 같은 이름의 것들이 있나 찾아 보게 되었다. .. 그 순간, 아!! 아!! 를 연발하게 되었는데, 바로 #define 으로 정의된 이름을 함수명과 같기 때문 이였다. 전처리기에 의해서 함수명도 #define 정의된 이름으로 변경되면서, ..
최근댓글