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

C/C++에서 전처리기는 어떻게 작동합니까?

<시간/>

여기서 우리는 전처리기가 C 또는 C++에서 어떻게 작동하는지 볼 것입니다. 전처리기가 무엇인지 살펴보겠습니다.

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

모든 전처리기 지시문은 #으로 시작하고 공백 문자만 행에서 전처리기 지시문 앞에 나타날 수 있습니다. 전처리기 지시문은 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