easy software

C언어 #define - 삼항연산자를 매크로 함수로 작성하기 본문

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

C언어 #define - 삼항연산자를 매크로 함수로 작성하기

JAVA 웹개발자 2015. 2. 15. 17:16

#define 지시자를 이용한 매크로를 작성할때,

 

매크로 몸체에 각종 연산자 및 띄어쓰기도 올 수 있습니다.

 

그러면 제목대로 삼항연산자를 포함한 매크로를 작성해 보겠습니다.

 

 

 

#include <stdio.h>

 

//크기를 비교해주는 매크로 함수
#define MAX(x, y) x > y ? x : y

 

int main(void){
     int a, b;

 

     printf("같은 값은 비교할 수 없습니다. \n");
     printf("두 개의 정수 입력 : ");
     scanf_s("%d %d", &a, &b);

 

     printf("%d이(가) 더 큰 수입니다. \n", MAX(a, b));

     return 0;
}

 

 

위의 코드는 사용자가 두개의 정수를 입력하면, 큰 값을 출력해주는 프로그램입니다.

 

작성된 매크로를 보면 매크로몸체가 삼항연산자로 작성되어 있습니다.

 

삼항 연산자란, 조건 ? 참일때 : 거짓일때 를 반환하는 연산입니다.

 

즉, 위의 MAX함수는 x가 크면 x를 반환하고, y가 크면 y를 반환하게 됩니다.

 

그리고 매크로체에서는 띄어쓰기도 포함하고 있습니다.

 

위의 코드를 전처리기가 전처리하게 되면 아래와 같은 코드가 됩니다.

 

 

 

int main(void){
     int a, b;

 

     printf("같은 값은 비교할 수 없습니다. \n");
     printf("두 개의 정수 입력 : ");
     scanf_s("%d %d", &a, &b);

 

     printf("%d이(가) 더 큰 수입니다. \n", x > y ? x : y);

     return 0;
}

 

 

이처럼 삼항 연산자도 매크로의 몸체로 올 수 있음을 기억합시다.

Comments