2008/06/26 18:41

[C언어] #define이 필요한 이유

대부분의 C언어책에서

define은 "단순 치환"의 기능을 가졌다고한다.

예를들어

#define PI 3.14

즉 PI 가 3.14를 가리킨다는 것이다.

물론 맞는 말이다. 하지만 define이 존재하는 근본적인 이유가 몇가지 있다.

1. RAM 의 메모리에 할당되지 않는다.

    int a = 1;
    이 코드 한줄이 실제로 어떻게수행되는지 보자.
    1) 램영역에 4바이트의 메모리가 할당된다.
    2) CPU는 이 할당된 영역에 0000 0000 0000 0000 0000 0000 0000 0001 이라는 데이타를 써넣는다.

   #define a = 1;
   하지만 이렇게 #define을 사용한다면 램영역에 메모리 할당은 없다.
   코드내의 a 는 1이라는 상수값으로 치환되어 컴파일 되는것이다.

   요약하면,
    전자는 메모리 할당이 일어나는 반면에, 후자는 메모리할당이 일어나지않는다.컴파일타임에 상수로 취급되어     버리기때문이다.

define을 썼을때의 장점이 느껴지는가?
1. 메모리 절약
2. 코드의 가독성 증가.

하지만 조금이라도 값이 바뀔 가능성이 존재한다면 define을 사용해서는 절대로 안된다.
물론 컴파일도 안될것이다.
define은 단지 상수를 위해 존재한다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 Comment 0