预处理表达式可以出现在 #if 和 #elif 指令中。在预处理表达式中允许使用 !、==、!=、&& 和 || 运算符,并且可以使用括号进行分组。 pp-expression:(pp 表达式:) whitespaceopt pp-or-expression whitespaceopt(空白可选 pp 或表达式 空白可选) pp-or-expression:(pp 或表达式:) pp-and-expression(pp 与表达式)pp-or-expression whitespaceopt || whitespaceopt pp-and-expression(pp 或表达式 空白可选 || 空白可选 pp 与表达式) pp-and-expression:(pp 与表达式:) pp-equality-expression(pp 相等表达式)pp-and-expression whitespaceopt && whitespaceopt pp-equality-expression(pp 与表达式 空白可选 && 空白可选 pp 相等表达式) pp-equality-expression:(pp 相等表达式:) pp-unary-expression(pp 一元表达式)pp-equality-expression whitespaceopt == whitespaceopt pp-unary-expression(pp 相等表达式 空白可选 == 空白可选 pp 一元表达式)pp-equality-expression whitespaceopt != whitespaceopt pp-unary-expression(pp 相等表达式 空白可选 != 空白可选 pp 一元表达式) pp-unary-expression:(pp 一元表达式:) pp-primary-expression(pp 基本表达式)! whitespaceopt pp-unary-expression(! 空白可选 pp 一元表达式) pp-primary-expression:(pp 基本表达式:) truefalseconditional-symbol(条件符号)( whitespaceopt pp-expression whitespaceopt )((空白可选 pp 表达式 空白可选 )) 当在预处理表达式中引用时,已定义的条件编译符号具有布尔值 true,未定义的条件编译符号具有布尔值 false。 预处理表达式的计算总是产生一个布尔值。预处理表达式的计算规则与常数表达式(第 7.15 节)相同,唯一的例外是:在这里,唯一可引用的用户定义实体是条件编译符号。

评论