easy software

C언어 #define을 이용한 매크로 함수와 매크로 상수 예제 본문

C언어/매크로와 전처리기(preprocessor)

C언어 #define을 이용한 매크로 함수와 매크로 상수 예제

JAVA 웹개발자 2015. 2. 15. 12:56

매크로함수와 매크로상수를 작성하는 간단한 예제를 해보겠습니다.

 

 

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;
}

Comments