c++프로세서

5760 단어 c + +프로세서
예비 처리 장 치 는 컴 파일 러 가 실제 컴 파일 하기 전에 필요 한 예비 처 리 를 지시 하 는 명령 이다.
모든 예비 프로세서 명령 은 우물 번호(\#)로 시작 되 며,빈 칸 문자 만 예비 처리 명령 전에 나타 날 수 있 습 니 다.예비 처리 명령 은 C++구문 이 아니 기 때문에 분점(;)을 사용 하지 않 습 니 다.결말
이전 모든 인 스 턴 스 에\#include 명령 이 있 는 것 을 보 았 습 니 다.이 매크로 는 원본 파일 에 헤더 파일 을 포함 하 는 데 사 용 됩 니 다.
C++는 많은 예비 처리 명령 도 지원 합 니 다.예 를 들 어\#include,\#define,\#if,\#else,\#line 등 중요 한 명령 을 보 여 줍 니 다.
\#define 전처리
\#define 예비 처리 명령 은 기호 상수 생 성 에 사 용 됩 니 다.이 기 호 는 상수 가 보통 매크로 라 고 부 르 는데 명령 의 일반적인 형식 은 다음 과 같다.

#define macro-name replacement-text 
이 줄 코드 가 한 파일 에 나타 날 때 이 파일 에 추 후 나타 나 는 모든 매크로 는 프로그램 이 컴 파일 되 기 전에 replacement-text 로 대 체 됩 니 다.예 를 들 면:

#include <iostream>
using namespace std;
 
#define PI 3.14159
 
int main ()
{
 
 cout << "Value of PI :" << PI << endl; 
 
 return 0;
}
이제 이 코드 를 테스트 해서 예 처리 결 과 를 봅 시다.원본 코드 파일 이 존재 한다 고 가정 하고-E 옵션 을 사용 하여 컴 파일 하고 결 과 를 test.p 로 다시 설정 합 니 다.현재 test.p 파일 을 보면 많은 정 보 를 포함 하고 있 으 며 파일 밑 에 있 는 값 은 다음 과 같 습 니 다.

$ gcc -E test.cpp > test.p

...
int main ()
{
 
 cout << "Value of PI :" << 3.14159 << endl; 

 return 0;
}
매개 변수 매크로
매개 변수 가 있 는 매크로 를\#define 으로 정의 할 수 있 습 니 다.다음 과 같 습 니 다.

#include <iostream>
using namespace std;
 
#define MIN(a,b) (a<b ? a : b)
 
int main ()
{
 int i, j;
 i = 100;
 j = 30;
 cout <<"     :" << MIN(i, j) << endl;
 
 return 0;
}
위의 코드 가 컴 파일 되 고 실 행 될 때 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
작은 값:30
조건 부 컴 파일
일부 프로그램 소스 코드 를 선택적으로 컴 파일 할 수 있 는 몇 가지 명령 이 있다.이 과정 은 조건 컴 파일 이 라 고 불 린 다.
조건 부 프로세서 의 구 조 는 if 선택 구조 와 매우 비슷 하 다.다음 프로세서 의 코드 를 보십시오.

#ifdef NULL
 #define NULL 0
#endif
디 버 깅 할 때 만 컴 파일 할 수 있 습 니 다.디 버 깅 스위치 는 매크로 를 사용 하여 이 루어 질 수 있 습 니 다.다음 과 같 습 니 다.

#ifdef DEBUG
 cerr <<"Variable x = " << x << endl;
#endif
명령\#ifdef DEBUG 이전에 기호 상수 DEBUG 를 정의 했다 면 프로그램의 cerr 문 구 를 컴 파일 할 것 입 니 다.\#if 0 문 구 를 사용 하여 프로그램의 일부분 을 설명 할 수 있 습 니 다.다음 과 같 습 니 다.

#if 0
         
#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
 /*        */
 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
\#와\#연산 자
\#와\##예 처리 연산 자 는 C++와 ANSI/ISO C 에서 모두 사용 할 수 있 습 니 다.\#연산 자 는 replacement-text 토 큰 을 따옴표 로 인 한 문자열 로 변환 합 니 다.
다음 매크로 정 의 를 보십시오:

#include <iostream>
using namespace std;
 
#define MKSTR( x ) #x
 
int main ()
{
 cout << MKSTR(HELLO C++) << endl;
 
 return 0;
}
위의 코드 가 컴 파일 되 고 실 행 될 때 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
HELLO C++
그것 이 어떻게 일 하 는 지 봅 시다.이해 하기 어렵 지 않 습 니 다.C+프로세서 가 아래 줄 을:

cout << MKSTR(HELLO C++) << endl;
다음으로 전환:

cout << "HELLO C++" << endl;
\#\#연산 자 는 두 개의 토 큰 을 연결 하 는 데 사 용 됩 니 다.다음은 실례 입 니 다.

#define CONCAT( x, y ) x ## y
CONCAT 이 프로그램 에 나타 날 때 매개 변 수 는 매크로 대신 연 결 됩 니 다.예 를 들 어 프로그램 에서 CONCAT(HELLO,C++)는'HELLO C++'로 대 체 됩 니 다.다음 인 스 턴 스 와 같 습 니 다.

#include <iostream>
using namespace std;
 
#define concat(a, b) a ## b
int main()
{
 int xy = 100;
 
 cout << concat(x, y);
 return 0;
}
위의 코드 가 컴 파일 되 고 실 행 될 때 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
100
그것 이 어떻게 일 하 는 지 봅 시다.이해 하기 어렵 지 않 습 니 다.C+프로세서 가 아래 줄 을:

cout << concat(x, y);
다음으로 전환:

cout << xy;
C++의 미리 정 의 된 매크로
C++는 다음 표 에서 보 여 주 는 미리 정 의 된 매크로 를 제공 합 니 다.
거대 하 다.
묘사 하 다.
__LINE__
이것 은 프로그램 이 컴 파일 할 때 현재 줄 번 호 를 포함 합 니 다.
__FILE__
이것 은 프로그램 이 컴 파일 할 때 현재 파일 이름 을 포함 합 니 다.
__DATE__
원본 파일 을 대상 코드 로 변환 하 는 날 짜 를 표시 하 는 month/day/year 형식의 문자열 을 포함 합 니 다.
__TIME__
이것 은 프로그램 이 컴 파일 된 시간 을 나타 내 는 hour:minute:second 형식의 문자열 을 포함 합 니 다.
위 와 같은 매크로 의 인 스 턴 스 를 보 여 줍 니 다.

#include <iostream>
using namespace std;
 
int main ()
{
 cout << "Value of __LINE__ : " << __LINE__ << endl;
 cout << "Value of __FILE__ : " << __FILE__ << endl;
 cout << "Value of __DATE__ : " << __DATE__ << endl;
 cout << "Value of __TIME__ : " << __TIME__ << endl;
 
 return 0;
}
위의 코드 가 컴 파일 되 고 실 행 될 때 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
Value of __LINE__ : 6
Value of __FILE__ : test.cpp
Value of __DATE__ : Feb 28 2011
Value of __TIME__ : 18:52:48
이상 은 c++예비 프로세서 의 상세 한 내용 입 니 다.C+예비 프로세서 에 관 한 더 많은 자 료 는 우리 의 다른 관련 글 에 관심 을 가 져 주 십시오!

좋은 웹페이지 즐겨찾기