预处理器指令
重要
建议使用 Microsoft 的 IPP 收件箱类驱动程序,以及 Print Support Apps (PSA) ,在 Windows 10 和 11 中自定义打印体验,以便进行打印机设备开发。
有关详细信息,请参阅 打印支持应用设计指南。
GPD 文件可以包含预处理器指令,这些指令可用于控制 GPD 文件中各节的条件分析。 下表描述了可用于 GPD 文件的预处理器指令。
PreprocessorDirective | 定义 |
---|---|
*定义: SymbolName | 定义符号。 |
*Undefine: SymbolName | 删除以前定义的符号。 |
*Ifdef: SymbolName | 指示 GPD 文件条目块的开头。 如果定义了指定的符号,则 GPD 分析程序将处理此指令与下一 *Ifdef**、*Elseifdef、*Else 或 *Endif 指令之间的 GPD 文件条目。 |
*Elseifdef : SymbolName | 如果定义了指定的符号,并且上一个 *Ifdef 或 *Elseifdef 指令指定的符号未定义,则此指令与下一个 *Ifdef、*Elseifdef、*Elseif 或 *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 预处理器 | 环境为 Windows XP。 |
WINNT_50 | 适用于 Windows XP 和 Windows 2000 的 GPD 预处理器 | 环境为 Windows 2000。 |
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 文件节中指定该功能。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈