오늘은 전처리어에 대해 간단히 정리해보려고 한다.
전처리어는 전처리 단계에서 시작되며 #<지시자> 형태이다.
#include <iostream>
지시한 헤더파일 혹은 라이브러리를 포험하도록 지시#define MAX 100000
#define DEBUG 1
#define add(a, b) (a+b)
매크로를 정의한다. 이렇게 정의한 변수나 함수는 스택에 쌓이지 않고 전처리 단계에서 값으로 치환된다.#undef
로 정의한 매크로를 삭제할 수 있다.#if
#if DEBUG
cout << "debug mode\n";
#endif
조건문이다. 괄호를 사용하지 않기 때문에 반드시 #endif
로 닫아주어야 한다.
환경에 따라 다른 실행을 할 때 사용된다.
#ifdef, #ifndef
#ifdef DEBUG
... // A
#endif
#ifndef DEBUG
... // B
#endif
조건문의 일부이지만, 뒤에 있는 값이 정의 되었는지 여부를 검사한다. 즉, DEBUG의 값이 false더라도 일단 정의가 되어 있으면 무조건 A 부분은 실행이 된다.
이것을 통해 같은 소스코드를 중복으로 참조하는 일을 막을 수 있다.
#ifndef CODE_A
#define CODE_A
// 소스코드
#endif