본문 바로가기
C언어/매크로 (#define)

[C언어] #define 이란 무엇인가 (왜 매크로라고 부르나)

by bigpicture 2022. 7. 27.
반응형

#define 은 크게 두가지 기능이 있습니다. 상수와 함수입니다. 

 

1. 상수 (단순매크로)

어떤 값을 반복적으로 사용해야 하는 경우 변수로 선언하여 사용할 수 있습니다. 예를 들어 원주율이 있습니다. 아래와 같이 변수로 선언하여 이후에는 변수로 사용하면 됩니다. 

int PI=3.14;


하지만 이와 같이 선언할 경우 실수로 값을 변경할 수 있는 위험이 있습니다. 이런 경우 두 가지 대안이 있는데요. const 를 이용하여 상수로 만들거나 #define 을 이용하는 방법입니다. 먼저 const를 사용해봅시다. 

const int PI=3.14;


위와 같이 코딩할 경우 PI 는 변하지 않습니다. 또는 #define 을 사용하여 아래와 같이 코딩할 수도 있습니다. 

#define PI=3.14;


const 상수와 다른점은 #define 은 상수를 메모리 공간에 선언하지 않는다는데 있습니다. "PI가 보이면 3.14로 바꾸는" 기능을 수행합니다. '치환'인 것이죠. 

이러한 이유로 매크로라는 이름이 붙은 것입니다. PI 를 3.14로 치환하는 같은 작업을 반복 수행해줍니다. 

const 와 #define 이 기능이 비슷한데 뭘 써야하는지 궁금하신 분들은 아래 링크를 참고하세요. 

https://kldp.org/node/60529

 

2. 함수

#define 의 치환을 이용해 함수를 구현한 것입니다. 두 수를 더하는 함수를 구현하면 아래와 같습니다. 

#define SUM(a,b) (a+b)
반응형

댓글