전처리기 지시문
GPD 파일에는 GPD 파일 내 섹션의 조건부 구문 분석을 제어하는 데 사용할 수 있는 전처리기 지시문이 포함될 수 있습니다. 다음 표에서는 GPD 파일에서 사용할 수 있는 전처리기 지시문에 대해 설명합니다.
| PreprocessorDirective | 정의 |
|---|---|
정의: SymbolName |
기호를 정의합니다. |
정의되지 않은: SymbolName |
이전에 정의된 기호를 제거합니다. |
Ifdef : SymbolName |
GPD 파일 항목 블록의 시작을 나타냅니다. 지정된 기호가 정의되면 이 지시문과 다음 *Ifdef, *Elseifdef, *Else 또는 *Endif 지시문 사이의 GPD 파일 항목이 GPD 파서에서 처리됩니다. |
Elseifdef : SymbolName |
지정한 기호가 정의되어 있고 이전 Ifdef 또는 *Elseifdef 지시문에서 지정한 기호가 정의되지 않은 경우 이 지시문과 다음 *Ifdef, *Elseifdef, *Else 또는 *Endif 지시문 사이의 GPD 파일 항목은 GPD 파서에서 처리됩니다. |
그 외 : |
이전 Ifdef 또는 *Elseifdef 지시문에서 지정한 기호가 정의되지 않은 경우 이 지시문과 다음 *Ifdef 또는 *Endif 지시문 사이의 GPD 파일 항목은 GPD 파서에서 처리됩니다. |
Endif : |
GPD 파일 항목 블록의 끝을 나타냅니다. |
포함 : "FileName" |
추가 GPD 파일의 이름을 지정합니다. 미니 드라이버에서 여러 GPD 파일 사용을 참조하세요. |
SetPPPrefix : PrefixString |
전처리기 지시문 앞에 접두사 문자열을 변경합니다. 전처리기 지시문 접두사 변경 섹션을 참조하세요. |
조건부 전처리기 지시문을 중첩할 수 있습니다. 각 중첩 수준에서 조건부 전처리기 지시문을 사용하는 시퀀스는 다음과 같습니다.
*Ifdef: Symbol1 GPD 파일 섹션
*Elseifdef: Symbol2 GPD 파일 섹션
*Elseifdef: Symbol3 GPD 파일 섹션
*Elseifdef: Symbol4 GPD 파일 섹션
...
*기타: GPD 파일 섹션
*Endif:
사용되는 각 *Ifdef 지시문에 대해 *Endif 가 필요합니다. *Elseifdef 및 *Else 지시문은 선택 사항입니다. 각 GPD 파일 섹션에는 GPD 파일 항목과 필요에 따라 조건부 전처리기 지시문의 중첩된 시퀀스가 포함될 수 있습니다.
*Define 를 사용하여 정의된 모든 기호는 *Undefine을 사용하여 명시적으로 정의되지 않은 상태로 유지됩니다.
*Include 지시문을 사용하면 추가 GPD 파일의 이름을 지정할 수 있습니다. 자세한 내용은 미니 드라이버에서 여러 GPD 파일 사용을 참조하세요.
*IgnoreBlock GPD 항목은 전처리기 지시문에 영향을 주지 않습니다. 전처리기는 GPD 파서 전에 실행되기 때문입니다.
전처리기 지시문 접두사 변경
*SetPPPrefix 지시문을 사용하면 전처리기 지시문과 함께 사용되는 접두어를 변경할 수 있습니다. 즉, 이 지시문을 사용하여 전처리기 지시문을 앞에 추가하는 별표(*) 문자를 다른 문자 또는 문자열로 바꿀 수 있습니다.
예를 들어 GPD 파일에 다음 지시문이 포함되어 있는 경우
*SetPPPrefix: #SpecialPrefix#
그런 다음 전처리기에서 시작하는 * 전처리기 지시문 검색을 중지하고 대신 #SpecialPrefix#로 시작하는 지시문을 찾습니다. 다음 시퀀스는 전처리기 접두사 접두사 #SpecialPrefix#을 임시로 변경한 다음 해당 접두사로 *복원합니다.
*SetPPPrefix: #SpecialPrefix#
#SpecialPrefix#Ifdef: WINNT_50
#SpecialPrefix#Include: "ExtraGPD.gpd"
#SpecialPrefix#Endif:
#SpecialPrefix#SetPPPrefix: *
이 기능의 주요 목적은 향후 운영 체제 버전용으로 작성된 GPD 파일이 Windows 2000과 호환되도록 하는 것입니다. 예를 들어 향후 버전의 운영 체제용 GPD 파일에는 Windows 2000에서 지원하는 별표 접두사 접두사 지시문과 충돌하는 GPD 파일 항목이 포함될 수 있다고 가정합니다. 접두사 변경으로 향후 운영 체제 버전을 위해 작성된 GPD 파일을 Windows 2000과 함께 사용할 수도 있습니다. 예제는 다음과 같이 생성될 수 있습니다.
*Ifdef: WINNT_70
*SetPPPrefix: #SpecialPrefix#
*% Do special, OS-specific processing of
*% GPD file entries that might conflict with
*% asterisk-prefixed preprocessor directives.
#SpecialPrefix#SetPPPrefix: *
*Endif:
이 기술은 전처리기가 찾는 접두사만 변경합니다. 파서에서 인식되는 키워드 앞에는 항상 별표가 있어야 합니다.
미리 정의된 전처리기 기호
Microsoft는 다음 전처리기 기호를 정의합니다.
| 기호 | 정의 위치 | 정의 |
|---|---|---|
WINNT_51 |
WINDOWS XP용 GPD 전처리기 |
환경은 XP를 Windows. |
WINNT_50 |
Windows XP 및 Windows 2000용 GPD 전처리기 |
환경은 2000년 Windows. |
WINNT_40 |
Windows XP, Windows 2000 및 Windows NT 4.0용 GPD 전처리기 |
환경은 Windows NT 4.0입니다. |
PARSER_VER_1.0 |
Windows NT 4.0, Windows 2000 및 Windows XP용 GPD 전처리기 |
GPD 파서 버전 1.0 |
WINNT_40, WINNT_50 및 WINNT_51 기호는 Windows NT 4.0, Windows 2000 및 Windows XP와 호환되는 GPD 파일을 만드는 데 유용합니다. 예를 들어 Windows XP가 Windows 2000에서 지원되지 않는 프린터 기능을 지원하는 경우 *Ifdef: WINNT_51 및 *Endif 지시문으로 제한된 GPD 파일 섹션 내에서 해당 기능을 지정할 수 있습니다.