Udostępnij za pośrednictwem


Dyrektywy preprocesora

Ważny

Nowoczesna platforma drukowania jest preferowanym sposobem komunikacji z drukarkami w systemie Windows. Zalecamy używanie sterownika klasy skrzynki odbiorczej IPP firmy Microsoft wraz z aplikacjami do obsługi drukowania (PSA), aby dostosować środowisko drukowania w systemie Windows 10 i 11 na potrzeby opracowywania urządzeń drukarki.

Aby uzyskać więcej informacji, zobacz przewodnik projektowania aplikacji Print support.

Pliki GPD mogą zawierać dyrektywy preprocesora, które mogą służyć do kontrolowania warunkowego analizowania sekcji w pliku GPD. W poniższej tabeli opisano dyrektywy preprocesora, które mogą być używane w plikach GPD.

Dyrektywa Preprocesora Definicja
* Zdefiniuj: SymbolName Definiuje symbol.
* Undefine: SymbolName Usuwa wcześniej zdefiniowany symbol.
* Ifdef: SymbolName Wskazuje początek bloku wpisów pliku GPD.

Jeśli określony symbol jest zdefiniowany, wpisy pliku GPD między tą dyrektywą a następnymi dyrektywami *Ifdef**, *Elseifdef, *Elselub *Endif są przetwarzane przez analizator GPD.
* Elseifdef : SymbolName Jeśli określony symbol jest zdefiniowany, i symbol określony przez poprzednią dyrektywę *Ifdef lub *Elseifdef jest niezdefiniowany, wpisy w pliku GPD znajdujące się pomiędzy tą dyrektywą a następną dyrektywą *Ifdef, *Elseifdef, *Else, lub *Endif są przetwarzane przez analizator GPD.
* Inaczej: Jeśli symbol określony przez poprzednią dyrektywę *Ifdef lub *Elseifdef jest niezdefiniowany, wpisy pliku GPD między tą dyrektywą a następną dyrektywą *Ifdef lub *Endif są przetwarzane przez analizator GPD.
* Endif: Wskazuje koniec bloku wpisów pliku GPD.
* uwzględnij: "FileName" Określa nazwę dodatkowego pliku GPD. Aby uzyskać więcej informacji, zobacz Korzystanie z wielu plików GPD w ministerowniku.
* SetPPPrefix: PrefixString Zmienia ciąg prefiksu poprzedzony dyrektywami preprocesora. Aby uzyskać więcej informacji, zobacz sekcję Zmiana prefiksu dyrektywy preprocesora.

Zagnieżdżone mogą być dyrektywy preprocesora warunkowego. Na każdym poziomie zagnieżdżania sekwencja używania dyrektyw preprocesora warunkowego jest następująca:

* Ifdef: Symbol1 sekcji pliku GPD

* Elseifdef: Symbol2 sekcja pliku GPD

* Elseifdef: sekcja pliku GPD Symbol3

* Elseifdef: Symbol4 sekcji pliku GPD

...

* Else: sekcja pliku GPD

* Endif:

Jeżeli używana jest dyrektywa *Ifdef, wymagana jest *Endif. Dyrektywy *Elseifdef i *Else są opcjonalne. Każda sekcja pliku GPD może zawierać wpisy pliku GPD i opcjonalnie zagnieżdżoną sekwencję dyrektyw preprocesora warunkowego.

Wszystkie symbole zdefiniowane przy użyciu *Definiuj pozostają zdefiniowane do momentu, gdy zostaną jawnie niezdefiniowane przy użyciu *Niezdefiniuj.

*Dyrektywa Include umożliwia określenie nazwy dodatkowego pliku GPD. Aby uzyskać więcej informacji, zobacz Używanie wielu plików GPD w ministerowniku.

Należy pamiętać, że wpis *IgnoreBlock GPD nie ma wpływu na dyrektywy preprocesora, ponieważ preprocesor wykonuje przed analizatorem GPD.

Zmienianie prefiksu dyrektywy preprocesora

Dyrektywa *SetPPPrefix umożliwia zmianę prefiksu używanego z dyrektywami preprocesora. Oznacza to, że można użyć tej dyrektywy, aby zastąpić znak gwiazdki (*), który poprzedza dyrektywy preprocesora innym znakiem lub ciągiem.

Jeśli na przykład plik GPD zawiera następującą dyrektywę:

*SetPPPrefix: #SpecialPrefix#

następnie preprocesor zatrzymuje wyszukiwanie dyrektyw preprocesora, które zaczynają się od *, a zamiast tego szuka dyrektyw rozpoczynających się od #SpecialPrefix#. Następująca sekwencja tymczasowo zmienia prefiks preprocesora na #SpecialPrefix#, a następnie przywraca go do *.

*SetPPPrefix: #SpecialPrefix#
#SpecialPrefix#Ifdef: WINNT_50
#SpecialPrefix#Include: "ExtraGPD.gpd"
#SpecialPrefix#Endif:
#SpecialPrefix#SetPPPrefix: *

Głównym celem tej funkcji jest umożliwienie plików GPD zapisanych dla przyszłych wersji systemu operacyjnego, aby były zgodne z systemem Windows 2000. Załóżmy na przykład, że pliki GPD dla przyszłej wersji systemu operacyjnego mogą zawierać wpisy plików GPD, które powodują konflikt z dyrektywami preprocesora poprzedzonymi gwiazdką, obsługiwanymi przez system Windows 2000. Zmieniając prefiks, plik GPD napisany dla przyszłej wersji systemu operacyjnego może być również używany z systemem Windows 2000. Przykład można utworzyć w następujący sposób:

*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:

Należy pamiętać, że ta technika zmienia tylko prefiks, którego szuka preprocesor. Słowa kluczowe rozpoznawane przez analizator muszą być zawsze poprzedzone gwiazdką.

Wstępnie zdefiniowane symbole preprocesora

Firma Microsoft definiuje następujące symbole preprocesora.

Symbol Gdzie zdefiniowano Definicja
WINNT_51 Preprocesor GPD dla systemu Windows XP Środowisko to Windows XP.
WINNT_50 Preprocesor GPD dla systemów Windows XP i Windows 2000 Środowisko to Windows 2000.
WINNT_40 Preprocesory GPD dla systemów Windows XP, Windows 2000 i Windows NT 4.0 Środowisko to Windows NT 4.0.
PARSER_VER_1.0 Preprocesory GPD dla systemu Windows NT 4.0, Windows 2000 i Windows XP Analizator GPD w wersji 1.0

Symbole WINNT_40, WINNT_50 i WINNT_51 są przydatne do tworzenia plików GPD zgodnych z systemami Windows NT 4.0, Windows 2000 i Windows XP. Jeśli na przykład system Windows XP obsługuje funkcję drukarki, która nie jest obsługiwana przez system Windows 2000, tę funkcję można określić w sekcji pliku GPD, która jest ograniczona przez *Ifdef: WINNT_51 i *Endif dyrektywy.