심볼릭 상수
심볼릭 상수는 상수를 기호화하여 의미 있는 이름으로 지어서 쓰는 상수를 의미합니다. 즉, 리터럴 상수와는 반대의 개념으로 변수를 상수화하는 것입니다.
심볼릭 상수를 만드는 방법은 크게 두 가지입니다.
1. const 키워드를 이용하는 것
다음 예제를 가지고 const 키워드를 이용하여 심볼릭 상수를 만드는 방법에 관해서 알아보겠습니다. 상수의 이름은 변수명과 구분되게, 대문자로 하는것이 관례이며, 그로 인해서 가독성을 높힐 수 있습니다.
5행과 6행에서 const 키워드를 이용하여 변수 NUM을 상수로 만들고, 변수 PI를 상수로 만듭니다. 이때부터 100을 NUM이라고 하고, 3.14를 PI라고 대신 쓰면 됩니다. 이것이 바로 심볼릭 상수의 매력입니다. 리터럴 상수를 의미 있는 이름으로 심볼릭 상수화하고 있습니다.
8행과 9행에서 주석을 제거하고 컴파일을 해보면 아래와 같은 에러가 발생합니다. 그 이유는 NUM과 PI는 5행과 6행에서 심볼릭 상수로 선언하고 초기화가 되었기 때문에 값을 변경할 수가 없습니다.
심볼릭 상수를 만들 때 주의할 점은 선언과 동시에 반드시 초기화를 해야 한다는 것입니다. 그렇지 않으면 문제가 생깁니다. 왜 문제가 되는지는 다음 예제를 살펴보겠습니다.
5행에서 심볼릭 상수를 선언하고 초기화는 하지 않았습니다. 그리고 세미콜론으로 한 문장을 끝냈습니다. 무엇이 문제인가요? 변수 NUM을 초기화하지 않은 상태에서 심보릭 상수의 선언을 끝냈습니다. 이 문제 때문에 심볼릭 상수는 아무 읨 없는 값이 상수화되어 버립니다. 7행에서 현재 NUM에는 아무 의미 없는 값이 초기화되어 심볼릭 상수가 되었기 때문에 컴파일 에러가 발생합니다.
2. 매크로 상수를 이용하는 것(#define 문을 이용하기)
#define 문을 이용하여 심볼릭 상수를 만드는 방법에 관해서 다음 예제를 가지고 알아보겠습니다.
4행부터 6행까지에서 #define문은 전처리기에서 수행되는 문장입니다. 전처리기는 컴파일러가 소스 파일을 컴파일하기 전에 먼저 수행되는데, 이처럼 #define문은 프로그램에서 여러 번 사용되는 상수 값을 매크로 상수로 정의해서 사용하게 됩니다.
C언어의 기본 문법 구조 - 전처리와 헤더 파일
1번라인처럼 #include 를 보면 특수 문자 '#'이 있습니다. 이것을 전처리기라고 합니다. 전처리기란? 컴파일러가 컴파일을 수행하기 전에 먼저 처리하는 것을 의미합니다. https://jcoding7.tistory.com/entry
jcoding7.tistory.com
프로그래밍 할 때 리터럴 상수 대신에 심볼릭 상수를 사용하는 이유는 무엇일가요? 3.14라는 리터럴 실수형 상수가 프로그램 내에서 100번 사용되고 잇다가 4.14로 변경되어야 하는 경우에 100번 수정해야 하는 문제가 발생합니다. 만약 3.14와 같은 리터럴 실수형 상수를 심볼릭 상수로 정의해 놓았다면, const 키워드나 #define문의 선언문만 한 번 고치면 됩니다. 결국 프로그램 개발이 다 끝 난후, 유지보수까지도 생각한다면, 리터럴 상수가 아닌 심볼릭 상수를 사용해야 됩니다.
'프로그래밍언어 > C언어' 카테고리의 다른 글
연산자 종류 - 대입 연산자 (0) | 2021.09.02 |
---|---|
부록 - 변수와 변수의 시작 주소 (0) | 2021.09.01 |
상수란 무엇인가? - 리터럴 상수 (0) | 2021.08.31 |
상수란 무엇인가? - 상수란? (0) | 2021.08.30 |
변수 선언 시 주의 할 점 (2) | 2021.08.28 |
댓글