
#define FOO 1.024
위 케이스는 컴파일 전에 해당 문자열을 치환하는 전처리기
위의 FOO라는 심볼릭의 존재를 컴파일러가 알지 못한 채로 제거될 수 있어서 오류에도 상수로 표기될 수 있음, 따라서 이와 관련된 버그가 발생할 경우, 추적하는 데에 시간을 낭비하게 될 것
const double FOO = 1.024;
해결책은 매크로를 상수로 대체하는 것이다.
위 상수는 컴파일러에서 확실히 관측할 수 있고 심볼 테이블에도 확실하게 입력된다. 또한, 전처리기를 통해 일괄적으로 대체된 경우 해당 객체의 복사본이 여럿 생성될 수 있지만 상수의 경우는 복사본이 하나 이상 생성되지 않는다.