카테고리 없음

#define (매크로 함수)

zuyo 2019. 5. 8. 22:47
반응형

1. 매크로 함수를 알아보기 먼저, 선행처리기란?

컴파일 이전의 처리를 말한다. (단순 치환 작업)
#include도 선행처리 명령문 중 하나이다.

Source -> 선행처리기 -> 컴파일러 -> 링커 -> exe


2. 매크로 함수의 특징

1) 매크로 함수의 장점
- 일반 함수에 비해 빠른 실행속도 (단순 치환이므로)
- 자료형에 따라 별도로 함수를 정의하지 않아도 된다.

2) 매크로 함수의 단점
- 정의하기가 까다롭다.
- 디버깅이 어렵다.

3) 매크로 함수로 정의하면 좋은 함수는?
- 작은 크기의 함수
- 호출 빈도가높은 함수


3. #define

상수, 함수 등 거의 모든 것을 매크로 몸체에 넣어 매크로로 정의 할 수 있다.

#define    YEAR    2013 
// YEAR를 2013로 전부 치환
#define    ADD(X)    X*X 
// ADD(X)를 X*X 로 치환

* 매크로는 그대로 치환되기 때문에 수식의 순서에서 혼란이 발생하기 쉽다
반드시 파라미터 하나하나, 그리고 식 전체에도 괄호를 쳐주는 습관이 필요하다

#define   SQUARE(X)   ((X)*(X))

* 두 줄이상에 걸쳐 쓸 경우 역슬래쉬로 표시해준다

#define SQUARE(X)   \
((X)*(X))

* 먼저 정의된 매크로의 경우 나중에 정의된 매크로에서 사용가능하다

#define   PI   3.14
#define   SQUARE(X)    ((X)*(X))
#define   CIRCLE(R)    (SQUARE(R)*PI)

예시)

#include <stdio.h>

#define NAME "Yohan"
#define AGE 23
#define PRINT puts("가나다라마바사");
#define PI 3.14
#define SQUARE(X) X*X
#define CIRCLE(R) (SQUARE(R)*PI)

int main()
{
	printf("%s \n",NAME);
	printf("%d \n",AGE);
	PRINT
	printf("%.2lf \n",CIRCLE(2));
	return 0;
}
반응형