Code Archive/C언어

Step14. 선행처리자(#define/#include)

쌍큐 2014. 9. 12. 13:06

선행처리자라는 것은 컴파일 되기전에 실행하는 문법


- 전처리기로 매크로 함수 및 상수 선언

단 매개 변수 부분에는 변수 앞에 변수 타입이 들어 가지 않는다.


- 매크로명으로 코딩한 부분이 값으로 쓴 것이 컴파일시에 치환이 된다

#define 매크로명 실제값

ex> #define PI 3.14

ex> #define MESSAGE "메세지 "

매크로 함수 정의법

ex> #define sum(a,b) (a+b)

ex> #define 함수명(매개변수) (함수 내용)

ex> #define 함수명(매개변수) { \

코드;\

코드; }

ex> #define 함수명(매개변수) {코드;코드 }


예제>

#define PI 3.14

#define swap(a,b) { \

int temp = a; \

a = b; \

b = temp; \

};

#define max(a,b) (a > b ? a : b)

#define min(a,b) (a > b ? b : a)


#define abs(a) (a >= 0 ? a : -a)


예제>

#include <stdio.h>


#define PI 3.14

#define MESSAGE "메세지를 출력합니다"

#define PRINT printf("메세지 출력\n")

#define plus(a,b) (a+b)

/*

#define max(a,b) {\

if(a>b)\

printf("a가 크다\n");\

else\

printf("b가 크다\n");\

}

*/

#define max(a,b) (a > b ? a : b)

#define min(a,b) (a < b ? a : b)

#define abs(a) (a > 0 ? a : -(a))

#define swap(a,b) {\

int temp;\

temp = a;\

a=b;\

b=temp;\

}

void main(){

printf("%lf\n",PI);

printf("%s\n",MESSAGE);

PRINT;

int a=10,b=20;

printf("%d\n",plus(a,b));

printf("%d\n",max(a,b));

printf("%d\n",min(a,b));

printf("%d\n",abs(-10));

swap(a,b);

printf("%d %d\n",a,b);


}