|
크게 const는 #define에 대해 두 가지 의미가 있습니다.
1. 타잎을 가지므로 보다 표현 범위와 구조에 대해 명확하게 됩니다.
심지어 class일 수도 있습니다. (당연하잖아)
2. const에는 메모리가 할당됩니다. 컴파일러로 하여금 그 영역에 덮어쓰는 작업을 막도록 감시하게 해 줄 뿐이지
주소를 직접 건드리면 const의 값 마져 변경시킬 수 있습니다.
#define 문에 의한 상수선언은 #define 문의 극히 일부에 해당합니다. 엄밀히 상수를 표현하는데 적합하지 않습니다.
코딩의 편의를 주는데 초점을 두고 있기 때문이거든요.
const 는 그에 반해 일반 변수와 생성 및 동작 메카니즘이 같습니다. 컴파일러가 접근을 감독하느냐의 차이 뿐이죠.
초기의 C언어는 const가 없었기 때문에 #define을 이용해 상수를 표현하곤 했다고 알고 있습니다.
그 역할적 부족함을 채우기 위해 등장한 것이죠.
한수동 님이 쓰신 글 :
: define 은 컴파일 시에 해당 상수를 일일이 제가 지정했던 값으로 변환 해준 후에 컴파일 한다는 것은 알겠습니다..
:
: 근데 왜 도대체 const가 필요한지는 모르겠습니다..
:
: 단지 빌더에서 지원하는 자동 완성 기능때문 이라는 것은 아닌 것 같구요...
:
: 궁금합니다...
|