Compartir a través de


Directivas de preprocesador

Importante

La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.

Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.

Los archivos GPD pueden contener directivas de preprocesador, que se pueden usar para controlar el análisis condicional de secciones dentro del archivo GPD. En la tabla siguiente se describen las directivas de preprocesador que se pueden usar en archivos GPD.

PreprocessorDirective Definición
*Define: SymbolName Define un símbolo.
*Undefine: SymbolName Elimina un símbolo previamente definido.
*Ifdef: SymbolName Indica el principio de un bloque de entradas de archivo GPD.

Si se define el símbolo especificado, el analizador GPD procesa las entradas del archivo GPD entre esta directiva y la siguiente directiva *Ifdef**, *Elseifdef, *Else o *Endif.
*Elseifdef : SymbolName Si se define el símbolo especificado y el símbolo especificado por la directiva *Ifdef o *Elseifdef anterior no está definido, el analizador GPD procesa las entradas del archivo GPD entre esta directiva y la siguiente *Ifdef, *Elseifdef, *Else o *Endif .
*Else: Si el símbolo especificado por la directiva *Ifdef o *Elseifdef anterior no está definido, el analizador GPD procesa las entradas del archivo GPD entre esta directiva y la siguiente directiva *Ifdef o *Endif.
*Endif: Indica el fin de un bloque de entradas de archivo GPD.
*Include: "FileName" Especifica el nombre de un archivo GPD adicional. Para obtener más información, consulte Uso de varios archivos GPD en un minicontrolador.
*SetPPPrefix : PrefixString Cambia la cadena de prefijo que se antepone a las directivas del preprocesador. Para obtener más información, consulte la sección Cambio del prefijo de directiva de preprocesador.

Las directivas de preprocesador condicional se pueden anidar. En cada nivel de anidamiento, la secuencia para usar directivas de preprocesador condicional es la siguiente:

Sección del archivo GPD *Ifdef: Symbol1

Sección del archivo GPD *Elseifdef: Symbol2

Sección del archivo GPD *Elseifdef: Symbol3

Sección del archivo GPD *Elseifdef: Symbol4

...

*Else: Sección del archivo GPD

*Endif:

Para cada directiva *Ifdef usada, se requiere *Endif. Las directivas *Elseifdef y *Else son opcionales. Cada sección de archivo GPD puede contener entradas de archivo GPD y, opcionalmente, una secuencia anidada de directivas de preprocesador condicional.

Todos los símbolos definidos mediante *Define permanecen definidos hasta que se anula su definición explícitamente mediante *Undefine.

La directiva *Include permite especificar el nombre de un archivo GPD adicional. Para obtener más información, consulte Uso de varios archivos GPD en un minicontrolador.

Tenga en cuenta que la entrada *IgnoreBlock GPD no afecta a las directivas de preprocesador, ya que el preprocesador se ejecuta antes del analizador GPD.

Cambio del prefijo de directiva de preprocesador

La directiva *SetPPPrefix permite cambiar el prefijo usado con directivas de preprocesador. Es decir, puede usar esta directiva para reemplazar el carácter asterisco (*) que se antepone a las directivas de preprocesador por otro carácter o cadena.

Por ejemplo, si el archivo GPD fuente contiene la siguiente directiva:

*SetPPPrefix: #SpecialPrefix#

el preprocesador deja de buscar directivas de preprocesador que comienzan por * y, en su lugar, busca directivas que comienzan por #SpecialPrefix#. La secuencia siguiente cambia temporalmente el prefijo del preprocesador a #SpecialPrefix# y, a continuación, lo restaura en *.

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

El propósito principal de esta característica es permitir que los archivos GPD escritos para futuras versiones del sistema operativo sean compatibles con Windows 2000. Por ejemplo, supongamos que los archivos GPD para una versión futura del sistema operativo pueden incluir entradas de archivo GPD que entran en conflicto con las directivas de preprocesador con prefijo asterisco admitidas por Windows 2000. Al cambiar el prefijo, también se puede usar un archivo GPD escrito para la versión futura del sistema operativo con Windows 2000. Un ejemplo se podría crear así:

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

Tenga en cuenta que esta técnica solo cambia el prefijo que busca el preprocesador. Las palabras clave reconocidas por el analizador siempre deben ir precedidas por un asterisco.

Símbolos de preprocesador predefinidos

Microsoft define los siguientes símbolos de preprocesador.

Símbolo Dónde se define Definición
WINNT_51 Preprocesador GPD para Windows XP El entorno es Windows XP.
WINNT_50 Preprocesador GPD para Windows XP y Windows 2000 El entorno es Windows 2000.
WINNT_40 Preprocesadores GPD para Windows XP, Windows 2000 y Windows NT 4.0 El entorno es Windows NT 4.0.
PARSER_VER_1.0 Preprocesadores GPD para Windows NT 4.0, Windows 2000 y and Windows XP Versión de analizador de GPD 1.0

Los símbolos WINNT_40, WINNT_50 y WINNT_51 son útiles para crear archivos GPD compatibles con Windows NT 4.0, Windows 2000 y Windows XP. Si, por ejemplo, Windows XP admite una funcionalidad de impresora que no es compatible con Windows 2000, esa funcionalidad se puede especificar dentro de una sección de archivos GPD enlazada por directivas *Ifdef: WINNT_51 y *Endif.