따..딱히 공부하려고 포스팅하는 건 아니니까..!
#define보다 const가 더 유용한 이유 본문
#define
알다시피 #이 붙은 것은 전처리기이다.
전처리기라는 것은 컴파일을 하기 전에 소스코드가 미리 처리를 해버리는 것을 말한다.
즉, #define을 사용하면 컴파일러가 쓰는 기호 테이블에 표시가 되지 않아 파일 오류가 나도 어디서 오류가 났는지 알기가 쉽지 않다.
예를 들어,
#define NUM 100
라는 코드를 짰다고 하자.
이 코드만을 봤을 때에는 NUM이 기호식 이름으로 보일지도 모른다. 하지만 컴파일러 입장에서는 NUM은 그냥 100이라는 상수이다. 그래서 에러 메세지가 나면 NUM이 표시되는 것이 아니라 100이라는 상수만 표시가 된다. 그러므로 어디서 오류가 났는지 어렵다는 것이다.
그렇기 때문에 #define을 멀리하고 const, enum, inline을 사용해야 하는 것이다.
const
const는 변수를 상수화 하는 명령어이다.
즉, 상수 자체가 아니라 상수 타입의 데이터로 만드는 것이기 때문에 기호 테이블에도 표시가 된다.
이 뿐만 아니라 const를 사용하게 되면 상수화를 한 데이터의 사본이 반드시 한 개만 생기기 때문에 메모리 또한 아낄 수 있다.
(#define의 경우, 사용한 만큼 사본이 생긴다. 즉, NUM이라는 변수를 넣은 개수만큼 사본이 생긴다는 소리이다.)
'C/C++' 카테고리의 다른 글
추상화(Abstraction) (0) | 2015.02.05 |
---|---|
컴파일과 링크 (0) | 2014.12.30 |
포인터(Pointer)와 레퍼런스(Reference) (0) | 2014.12.09 |
변수와 메모리공간 (0) | 2014.12.02 |
객체지향 프로그래밍과 절차지향 프로그래밍 (0) | 2014.12.02 |
Comments