관리 메뉴

DREAM IT, WISH IT, DO IT

[Effective C++] 컴파일러를 더 가까이 하자. 본문

Programming/C/C++

[Effective C++] 컴파일러를 더 가까이 하자.

개발일지 오세빈 2013. 8. 1. 23:39

Effective C++

항목2 : #define 을 쓰려거든, const, enum, inline을 떠올리자.

- 가급적 선행 처리자보다 컴파일러를 더 가까이 하자.

- 즉, 매크로 보다는 상수를 사용하자.


#define VALUE 1.123

매크로를 사용하면 컴파일러는 VALUE 라는 심볼릭 네임으로 확인이 불가능합니다. 컴파일러로 넘어가기전에 선행 처리자가 전부 상수로 바꿔버리기 때문입니다.


const double Value = 1.23;

언어 차원에서 지원하는 상수 타입의 데이터이기 때문에 컴파일러도 확인 가능하며 기호 테이블에도 들어갑니다.

매크로를 사용하면 해당 값이 등장 횟수만큼 복사되지만 상수 타입의 Value 는 사본은 딱 한개만 생깁니다.


- #define 을 이용해서 상수로 교체하려고 할 때 2가지 주의해야 하는 경우가 있습니다.

1. 상수 포인터를 정의하는 경우

상수 정의는 대게 헤더 파일에 넣는 것이 상례이므로 포인터를 꼭 const 로 선언하고 포인터가 가르키는 대상까지 const 로 선언하는 것이 보통이다.

const char * const Name = "Se Bin Oh";

-> 하지만 char* 보다는 string 객체가 사용하기 좋습니다.

const std::string Name

0 Comments
댓글쓰기 폼