C언어 #define을 이용한 매크로 함수와 매크로 상수 예제
매크로함수와 매크로상수를 작성하는 간단한 예제를 해보겠습니다.
1번 문제(매크로 함수)
#include <stdio.h>
//덧셈기능의 매크로함수
#define Add(x, y, z) ((x) + (y) + (z))
//곱셈기능의 매크로함수
#define Mul(x, y, z) ((x) * (y) * (z))
int main(void){
int a, b, c;
printf("세 개의 정수를 입력하세요 : \n");
scanf_s("%d %d %d", &a, &b, &c);
//매크로함수 Add호출
printf("덧셈 결과 : %d \n", Add(a, b, c));
//매크로함수 Mul호출
printf("곱셈 결과 : %d \n", Mul(a, b, c));
return 0;
}
위의 코드를 보면, Add와 Mul이라는 매크로함수가 작성되어있습니다.
각각의 매크로함수는 세 개의 인자를 받아서, 덧셈과 곱셈연산을 수행합니다.
매크로 몸체에서는 모든 인자들을 괄호로 감싸서 연산을 수행하고 있습니다.
괄호로 감싸는 이유를 잘 모르겠다고 하시면,
제 블로그의 매크로와 전처리 카테고리 첫번째 글을 봐주시기 바랍니다.
위의 코드를 전처리기가 전처리하게 되면, 아래와 같은 코드가 됩니다.
int main(void){
int a, b, c;
printf("세 개의 정수를 입력하세요 : \n");
scanf_s("%d %d %d", &a, &b, &c);
//매크로함수 Add호출
printf("덧셈 결과 : %d \n", ((a) + (b) + (c)));
//매크로함수 Mul호출
printf("곱셈 결과 : %d \n", ((a) + (b) + (c)));
return 0;
}
2번 문제(매크로 상수)
#include <stdio.h>
//원주율 PI를 매크로 상수로 정의
#define PI 3.1415
int main(void){
double input;
printf("원의 반지름을 입력하세요 : ");
scanf_s("%lf", &input);
input = input*input*PI;
printf("원의 넓이는 %f입니다. \n", input);
return 0;
}
이번에는 PI가 3.1415로 작성되어 있습니다.
즉, PI는 상수로써 #define 지시자를 이용하여 매크로 상수를 만든것입니다.
위의 코드를 전처리기가 전처리하면 아래와 같이 됩니다.
int main(void){
double input;
printf("원의 반지름을 입력하세요 : ");
scanf_s("%lf", &input);
input = input*input*3.1415;
printf("원의 넓이는 %f입니다. \n", input);
return 0;
}