预处理程序指令中的比较语法

另请参见

预处理程序支持以下三种类型的变量:

预处理程序支持变量之间的大多数常见比较(<=、<、>=、>==)。

此外,还支持对所有符号类型执行布尔运算,如 &&、||、! 和 ^

在执行布尔运算时,整数和字符串的操作相同。但是,它们将作为纯整数进行比较,并且可以在预处理代码等任务时使用,其中不同的屏幕分辨率需要为其优化不同的图像。例如,指令

//#if ScreenWidth>100 && ScreenHeight>120

可以指定一个代码块,它仅为大于 100x120 屏幕的设备导入图像。

如果定义了一个变量,则可以将其视为值为 "true" 的布尔变量。如果未将变量定义为性能或配置,则可以将其视为值为 "false" 的布尔变量。

不允许对不同的变量类型进行比较。但是,此类比较不会中断生成过程。如果要对不同的变量类型进行比较,预处理程序将在编辑器和“输出”窗口中发出警告,并按以下方式计算这些表达式:

运算符

共有三种类型的运算符,它们具有不同的优先级:

  1. “非”运算符 (!)

    此运算符具有最高优先级,可以在变量和表达式中使用,其语法为 !<标识符>!<表达式>

    例如,//#if !(ScreenWidth>100 && ScreenHeight>120) 用于检查屏幕大小是否小于 100x120。

    由于 ! 运算符具有最高优先级,因此诸如 //#if !ScreenSize=="100x200" 之类的表达式是非法的,并且会产生语法错误,原因是布尔结果不能与字符串进行比较。

  2. 比较运算符

    比较运算符具有次高优先级,执行典型的比较运算。由于这些运算符可以按词法比较字符串,并按数学方式比较整数,因此,它们支持跨类型比较。但是,这些运算符只能在表达式中使用,并且应该比较两个变量,而不是符号。

    还有一个特殊的比较运算符,用于执行“子集”关系运算。该运算符表示为 @ 字符。左侧和右侧的参数应当为字符串,用来表示由特定的分隔符分隔的两组标记。该运算符首先将左侧和右侧的字符串参数视为集合,然后确定左侧参数的集合是否为右侧参数的集合的子集。有效的字符分隔符是 <空格>、","";"。可以在每个参数中混合使用这些分隔符,如下例所示。

    "gif" @ "gif86, jpeg, gifaboo" = false

    "gif" @ "gif gif86 jpeg" = true

    "1 2 4;7,8" @ "0,1,2,3,4,5,6,7,8,9" = true

    "3 5 7 11 13" @ "0,1,2,3,4,5,6,7,8,9" = false

  3. 布尔运算符

    相对于其他运算符而言,布尔运算符具有最低的优先级。这些布尔运算符彼此之间也具有不同的优先级,就像在 Java 语言中一样。布尔运算符对布尔表达式结果执行典型的逻辑运算(如 &&、||^),或者检查变量定义,然后也将它们作为布尔表达式进行处理。将按以下顺序来处理布尔运算符:

    1. &&
    2. ^
    3. ||
另请参见
关于项目配置
关于性能
关于预处理
使用项目配置
管理预处理程序块
关于预处理程序指令

法律声明