[C언어] 12. 매크로
매크로
#define N 100
메크로는 코드의 가독성을 높여주는 도구입니다.
메크로를 코드에 적절하게 사용하면, 프로그램을 더 효율적으로 작성할 수 있습니다.
c언어 프로그램을 실행하면, 가장 먼저 전처리기(preprocessor)
가 실행됩니다.
메크로는 전처리기 단계에서 c언어 문장으로 변경됩니다.
전처리기 실행 단계에서 여러가지 기능이 실행되지만, 자세하게는 이후에 더 설명하겠습니다.
단순 메크로(simple macro)
#include<stdio.h>
#define N 100
int main (){
...
}
매크로 변수는 전처리기 단계에서 변수를 변수 값으로 변경되는 변수입니다.
일반적으로 모두 대문자로 작성되는 규칙을 가지고 있습니다.
#define N 10
....
int a[N];
for (int i = 0 ; i < N; i++) {
...
}
매크로는 프로그램 실행 도중에는 변경이 불가능합니다.
때문에, 변경이 필요하지 않은 데이터를 다룰때 유용하게 사용할 수 있습니다.
매크로 c언어를 더 읽기 편하게 활용할 수 있게 만들 수 있습니다.
#define true 1
#define false 0
#define BOOL int
....
BOOL i = true;
전에 설명했듯 c언어에서는 true
가 없지만, 메크로를 활용한다면 더 효과적으로 활용할 수 있습니다.
매크로 함수
#define multiple(a, b) ((a) * (b))
...
int a = multiple(val, n);
메크로는 함수처럼 활용할 수 있습니다.
사용하는 방식은 단순 메크로를 사용하는 방법과 동일합니다.
하지만, 메크로를 활용하여 연산하는 경우에도 연산 우선순위를 고려하기 때문에, 주의할 필요는 있습니다.
일반 함수와 차이
일반 함수와 메크로 함수는 처리되는 시점이 다릅니다.
위에서 설명했듯, 메크로 함수는 전처리기
단계에서 먼저 처리가 되고 일반 함수는 컴파일
단계에서 처리됩니다.
또, 일반 함수는 변수의 타입을 검사합니다.
변수의 타입이 다른경우 컴파일 에러가 발생하지만, 메크로 함수는 이를 검사하지 않습니다.
💡 지적 환영합니다
Comments