PI가 모두 3.14로 치환되었네요. 이렇게 변경된 소스 코드의 임시 파일이 컴파일(compile)됩니다. 선행 처리 과정 중에 소스 코드 자체를 수정하므로 메모리를 사용하지 않습니다. 메모리를 사용하지 않는다는 말은 곧 상수를 저장하기 위해서 변수를 선언하여 메모리를 할당하지 않는다는 의미입니다.
그렇다면 처음부터 임시 파일로 작성하면 편리할 것 같은데, 왜 굳이 #define PI 3.14와 같이 기호 상수를 사용했을까요?
지금은 간단한 코드이지만 코드 길이가 길고 복잡한 코드를 작성한다고 가정해 보겠습니다. 그리고 원래 기존 코드와 다르게, PI를 3.141592 같이 더 정확한 숫자로 프로그램을 수정하려고 한다고 가정합시다.
임시 파일과 같은 형식이라면 프로그래머가 모든 코드를 일일이 3.14를 3.141592로 변경해야 합니다. 변경하는 과정 중에 3.141593이라고 오타를 발생할 수도 있고, 또 수많은 3.14중에 어떤 하나는 변경하지 못하는 사용자 오류(human error)가 발생할 수도 있습니다.
그러나 #define PI 3.14를 #define PI 3.141592라고 한 줄만 변경하면 이러한 문제점은 바로 해결됩니다. 이것이 #define문을 사용하여 기호 상수를 사용하는 이유입니다.