매번 헷갈리는 매크로 함수를 정리해보았다.
매크로
#define 매크로명 치환될_부분
#define은 매크로명을 정의하는 전처리 지시자로, 위와 같이 사용한다.
매크로명을 정의하면 복잡한 상수나 문장을 의미 있는 단어로 쓸 수 있다.
#define PI 3.14159
예를 들어, 위와 같이 PI를 정의한다면, 3.14159 대신 PI를 사용하여 가독성을 높일 수 있다.
이와 같은 매크로 유형은 "매크로 상수" 라고 한다.
#define을 사용한 매크로 함수
내가 리눅스 커널을 분석하며 헷갈렸던 부분이다. 매크로 함수가 어마어마하게 많이 나온다.
매크로 함수는 인수에 따라 서로 다른 결괏값을 갖도록 치환된다. 따라서 비록 함수는 아니지만 인수를 주고 함수처럼 쓸 수 있다.
#define 매크로_함수명(인수) 치환될_부분
예를 들어보자.
#define SUM(a,b) ((a)+(b))
#define MUL(x,y) ((x)*(y))
이렇게 반복되는 연산을 매크로 함수로 치환하여 가독성을 높일 수 있다.
물론, 컴파일 과정에서 연산이 대체되기 때문에 매크로 사용에 따른 계산 오버헤드는 발생하지 않는다.
명심하자. #define은 그저 텍스트를 치환해주는 단순한 녀석이란 것을!
'소프트웨어 > C' 카테고리의 다른 글
| [C언어] C의 파일 입출력 (0) | 2025.12.03 |
|---|---|
| [C언어] const 키워드 (0) | 2025.08.24 |
| [C] void* 포인터 (0) | 2025.08.04 |
| [C] 헤더파일에 대하여 (0) | 2025.08.02 |
| [C] C언어의 extern 키워드 (0) | 2025.07.30 |