본문 바로가기

Language/C++

Preprocess (전처리)

preprocess 란 컴파일을 할경우 컴파일이 실행되기 전에 처리되는 것들을 말한다.

# 로 시작되며 우리가 흔히 C,C++에서 사용하는 #include 또한 전처리기의 일종이다.

include 문 외의 전처리기에 대해서 알아본다면....

#define

deifne 문은 한마디로 상수화 시키는 것...일반적인 C,C++ 서적에 많이 등정한다.

#deifne MAX 512
같은 형식으로 사용 할 수 있다.

#define MAX
와 같이 대치되는 문자 없이 그냥 사용되는 경우도 있다. 문자열을 정의 하지만 대치시키지는 않는다. 이렇게 사용하는 경우는 #ifdef~ #else ~ #endif 문과 같이 사용되며, 상당히 유용하게 사용된다고 한다.

#ifdef
는 조건부 컴파일이다. 조건의 진위 여부에 따라 코드의 일정 부분을 컴파일 할 것인지 아닌지를 결정하는 것이다.

#fidef 매크로명
코드
#endif

형식이며, 한 개 이상이면

#fidef 매크로명
코드
#else
코드
#endif

형식이다. 반드시 #endif 를 해줘야 한다.(#if 와 #ifdef 는 동일하다고 한다.)

또한 #ifdef 를 하였으면 #undef 를 하는 습관을 기르는 것이 좋다고 한다. undef 문 이후부터는 해당 식별자는 정의되지 않는것으로 간주한다.

#ifndef 상수
문장
#endif

위 문장은 상수가 정의 되지 않았다면 문장을 실행한다.
이 문장은 File의 첫 번째 라인에 위치하는 것이 좋다. 주석은 두 번째다. 이유는 몇몇 C++ 구현 시스템에서는 위와 같은 형식의 파일에서, variable 이 정의되어 있지 않다면, 아예 두 번째 부터 해당 파일을 읽지 않을 수 도 있다.


C++ 같은 경우는 전처리중 #defin 같은 경우는 Effective C++ 서적에서 사용을 비추한다. 쓸때 없는 메모리 낭비나, 캡슐화가 되지 않는 다는 점에대해서 이다.

C++에서는 const, enum, inline의 사용을 추천한다.