C언어는 컴파일 과정에서 제일먼저 전처리(preprocessing)과정을 거친다
이를 수행하는 부분을 전처리기(preprocessor)라고한다.
#으로 시작되는 구문은 전처리기에게 전처리기 지시자로써 인식되고
그에 해당하는 일이 전처리기에 의해서 수행된다.
크게 3가지로 나눌수 있다.
가장 먼저 #include 전처리기 지시자이다
#include <stdio.h>을 봤을 것이다.
이경우 stdio.h라는 이름을 가진 프로그램 소스의 내용을 첨가하겠다는 것이다
기본 재공 코드는 특정위치에 지정 되어 있기 때문에 <>로 묶어서 사용할 경우
특정위치로 가서 불러 오게 된다
하지만 사용자가 만든 헤더 파일일 경우는 " "로 묶어서 사용해야 한다
#include "TEST"처럼 사용해야 한다
두번째는
#define 이다 매크로라고 불리는 부분이다
#define은 치환의 역활을 하는데
#define MAXSZIE 5000 이라고 정의한다했을 경우
코드 중에 MAXSIZE를 5000으로 치환시켜주는 역활을 한다
그 외에도
#defien X(x) (x)*(x)
라고 하면
코드 중 X(10) 이라는 코드가 있을 경우
10*10을 하여 100으로 치환이 가능하다
#undef 라는 것도 있는데 이는 #define으로 정의된 것을 해제 할때 사용된다
#undef X(x)를 사용하면
다음 라인 부터의 코드에서 X(x)라는 코드를 치환하지 않게 된다
마지가 세번째는
조건부 번역이다 조건부 번역은 특정조건이 성립할 경우
프로그램의 소스의 일부분을 치환, 제어 할 수 있는 역활을 한다
기본적으로
#if (제어식1)
.....
#elseif(제어식2)
....
#else
.....
#endif
이다 단지 if문앞에 #추가한 형태이다
C언어의 if문처럼 이해하면 된다 단 {}대신 마지막에 #endif로 끝내야 한다
이는 기본적인 C언어 제어식,, if, elseif, else 와 같이 이해하면됩니다.
#ifdef 이라는 것도 있다 #if define 이라는 의미이다
#ifndef 은 #if not define 의 의미로 #if !defined가 같은 표현으로 있다
#ifdef, #ifndef는 기본적으로 중복해서 헤더파일을 불러오지 않도록 방지하는데 많이 쓰인다.
예를 들어
#ifndef MAXSIZE
#define MAXSIZE 5000
#endif
라는 코드르 보자 MAXSIZE라는 메크로가 중복으로 사용되지 않도록 검사를 한다 만약 사용하고 있다면
중복 정의를 방지 하게 되고 없다면 새로 정의 된다는것이다
두가지 이상의 복함 조건에는 #if문이 더욱 효과적이라고 할수 있다.
#if deinfe(PRINT) && !define(MAXSIZE)
.....
#endif
'근성 Program > C & C++' 카테고리의 다른 글
더블 포인터 (0) | 2010.11.02 |
---|---|
call by value // call by reference(point) // call by reference Part. 3 (0) | 2010.11.01 |
call by value // call by reference(point) // call by reference Part. 2 (0) | 2010.11.01 |
call by value // call by reference(point) // call by reference Part. 1 (0) | 2010.11.01 |
포인터 와 const (0) | 2010.11.01 |