반응형
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;
}
반응형