전처리기는 실제 컴파일이 시작되기 전에 정보를 사전 처리하도록 컴파일러에 지시하는 지시문입니다.
p모든 전처리기 지시문은 #으로 시작하고 공백 문자만 행에서 전처리기 지시문 앞에 나타날 수 있습니다. 전처리기 지시문은 C++ 문이 아니므로 세미콜론(;)으로 끝나지 않습니다.
모든 예제에서 이미 #include 지시문을 보았습니다. 이 매크로는 헤더 파일을 소스 파일에 포함하는 데 사용됩니다.
#include, #define, #if, #else, #line 등과 같이 C++에서 지원하는 많은 전처리기 지시문이 있습니다. 중요한 지시문을 살펴보겠습니다 −
#define 전처리기
#define 전처리기 지시문은 기호 상수를 만듭니다. 기호 상수를 매크로라고 합니다. 지시문의 일반 형식은 -
입니다.#define macro-name replacement-text
예시 코드
#include <iostream> using namespace std; #define PI 3.14159 int main () { cout << "Value of PI :" << PI << endl; return 0; }
출력
Value of PI :3.14159
조건부 컴파일
프로그램 소스 코드의 선택적 부분을 컴파일하는 데 사용할 수 있는 몇 가지 지시문이 있습니다. 이 프로세스를 조건부 컴파일이라고 합니다.
조건부 전처리기 구성은 'if' 선택 구조와 매우 유사합니다. 다음 전처리기 코드를 고려하십시오 -
#ifndef NULL #define NULL 0 #endif
디버깅 목적으로 프로그램을 컴파일할 수 있습니다. 다음과 같이 단일 매크로를 사용하여 디버깅을 켜거나 끌 수도 있습니다. -
#ifdef DEBUG cerr <<"Variable x = " << x << endl; #endif
이것은 기호 상수 DEBUG가 지시문 #ifdef DEBUG 전에 정의된 경우 cerr 문이 프로그램에서 컴파일되도록 합니다. 다음과 같이 #if 0 문을 사용하여 프로그램의 일부를 주석 처리할 수 있습니다. -
#if 0 code prevented from compiling #endif
예시 코드
#include <iostream> using namespace std; #define DEBUG #define MIN(a,b) (((a)<(b)) ? a : b) int main () { int i, j; i = 100; j = 30; #ifdef DEBUG cerr <<"Trace: Inside main function" << endl; #endif #if 0 /* This is commented part */ cout << MKSTR(HELLO C++) << endl; #endif cout <<"The minimum is " << MIN(i, j) << endl; #ifdef DEBUG cerr <<"Trace: Coming out of main function" << endl; #endif return 0; }
출력
Trace: Inside main function The minimum is 30 Trace: Coming out of main function