Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ 전처리기


전처리기는 실제 컴파일이 시작되기 전에 정보를 사전 처리하도록 컴파일러에 지시하는 지시문입니다.

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