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+예비 프로세서 에 관 한 더 많은 자 료 는 우리 의 다른 관련 글 에 관심 을 가 져 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HDU 원활 공사 & & 원활 공사 (차 트 법)모 성 은 도시 의 교통 상황 을 조사 하여 기 존의 도시 도로 통계 표를 얻 었 고 표 에는 모든 도로 가 직접 연 결 된 도시 가 열거 되 어 있다.성 정부의 '원활 한 공사' 목 표 는 성 전체의 어느 두 도시...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.