크게 const는 #define에 대해 두 가지 의미가 있습니다.
1. 타입을 가지므로 보다 표현 범위와 구조에 대해 명확하게 됩니다.
심지어 class일 수도 있습니다.
2. const에는 메모리가 할당됩니다. 컴파일러로 하여금 그 영역에 덮어쓰는 작업을 막도록 감시하게 해 줄 뿐이지
주소를 직접 건드리면 const의 값 마져 변경시킬 수 있습니다.
#define 문에 의한 상수선언은 #define 문의 극히 일부에 해당합니다. 엄밀히 상수를 표현하는데 적합하지 않습니다.
코딩의 편의를 주는데 초점을 두고 있기 때문이거든요.
const 는 그에 반해 일반 변수와 생성 및 동작 메카니즘이 같습니다. 컴파일러가 접근을 감독하느냐의 차이 뿐이죠.
초기의 C언어는 const가 없었기 때문에 #define을 이용해 상수를 표현하곤 했다고 알고 있습니다.
그 역할적 부족함을 채우기 위해 등장한 것이죠.
const가 붙으면 상수화가 되기 때문에 READ_ONLY 가 된다. 그래서 라이브러리와 같은 곳에 많이 쓰임.
http://mafa.tistory.com/entry/define
https://kldp.org/node/60529
참고 사이트
define은 메모리에 올라가지 않는다는 장점,
const는 type 을 지정해줄 수 있으므로 프로그래머가 에러를 확인하기 쉽다는 장점.
추가적으로 C++ 에서는 enum 을 사용할 수 있는데, type 도 지정할 수 있고 메모리에 올라가지
않음.
반응형
'잡다한 IT > 참고용' 카테고리의 다른 글
char* 와 char[] 의 차이점 (0) | 2018.06.18 |
---|---|
문자열 상수와 문자열 변수 (0) | 2018.06.15 |
포인터 종류 정리 (0) | 2018.06.15 |
리틀 엔디안 과 빅 엔디안 (0) | 2018.06.15 |
C에서 1바이트씩 읽어오기 (0) | 2018.06.15 |