[Effective C++] item 02

[Effective C++] item 02

#define을 쓰려거든 const, enum, inline을 떠올리자

#define보다 Const, Enum, Inline을 더 선호

  • 전처리보다 컴파일러를 선호한다는 표현

#define FOO 1.024

  • 위 케이스는 컴파일 전에 해당 문자열을 치환하는 전처리기

  • 위의 FOO라는 심볼릭의 존재를 컴파일러가 알지 못한 채로 제거될 수 있어서 오류에도 상수로 표기될 수 있음, 따라서 이와 관련된 버그가 발생할 경우, 추적하는 데에 시간을 낭비하게 될 것

const double FOO = 1.024;

  • 해결책은 매크로를 상수로 대체하는 것이다.

  • 위 상수는 컴파일러에서 확실히 관측할 수 있고 심볼 테이블에도 확실하게 입력된다. 또한, 전처리기를 통해 일괄적으로 대체된 경우 해당 객체의 복사본이 여럿 생성될 수 있지만 상수의 경우는 복사본이 하나 이상 생성되지 않는다.

댓글 작성

게시글에 대한 의견을 남겨 주세요.

댓글 0