C 전처리기(pre-processor)

 

C언어의 전처리기 정리.

1. #include
2. #define

#include - 컴파일시 다른 화일 포함시키기.

#include 사용법

#include <C언어 내장 화일명>
#include "자신이 만든 화일명"

main()함수 앞에 쓴다.
주로 *.h 형태인 헤더화일을 불러오는데 쓴다.
<>로 둘러싸인 화일은 C 프로그램의 include 폴더에서 찾고 ""로 둘러싸인 화일은 불러내는 c 화일과 같은 폴더에서 찾는다.

ex)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "myHeader.h"

#define - 문자 바꾸기

#define 사용법

#define 원래 문자 치환될 문자

main()함수 앞에 쓴다.
데이터나 수치 등을 알아보기 쉽게 하거나 그 수치를 나중에 쉽게 바꿀 수 있도록 해주는 용도.

ex)
#define MAX_NUM 100
#define PI 3.141592
#define RETURN 0x000d
#define ESC 0x001b
#define SPC 0x0020
#define BS 0x0008
#define F1 0x3b00
#define F2 0x3c00

#undef 사용법

#undef define되었던 문자.

#define에 의해 바뀌어진 문자를 해제시킬때 사용.

* 조건부 define문
#ifdef - 만약 define 되어있다면 아래 문장 컴파일.
#ifndef - 만약 define 되어있지 않다면 아래 문장 컴파일.
#endif - 조건부 define 문을 끝냄.

ex1)
#undef MAX_NUM
#undef PI

ex2)
#ifndef TRUE /* TRUE가 다른 화일 등에서 define 되어 있지 않다면*/
#define FALSE 0                /* 조건부 define 실행 */
#define TRUE !FALSE      /* 조건부 define 실행 */
#endif                          /* 조건부 define문을 끝냄 */

#define을 이용한 매크로 함수.

#define 매크로 함수명(형식 매개변수) (매크로 함수내용)

간단한 계산을 수행하는 함수의 경우 #define을 응용해 만들 수 있다.

ex)
#include <stdio.h>

#define NUM 3 /* NUM을 3으로 바꿔줌 */

#define square(x) ((x)*(x)) /* 제곱해서 되돌려 줌 */
#define larger(x, y) (((x) > (y))? (x) : (y))
/* 두 수를 비교해서 큰 값을 되돌림 */

void main(void){
     int a = NUM; /* define에의해 a는 3으로 초기화 된다. */
     int b = NUM+2;
     printf("a = %d, b= %d, Larger is %d\n", a, b, larger(a, b));
     a = square(a);
     printf("a = %d, b= %d, Larger is %d\n", a, b, larger(a, b));
}

-2007.11.18