预处理表达式可以出现在 #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 基本表达式:)
- true
false
conditional-symbol(条件符号)
( whitespaceopt pp-expression whitespaceopt )((空白可选 pp 表达式 空白可选 ))
当在预处理表达式中引用时,已定义的条件编译符号具有布尔值 true
,未定义的条件编译符号具有布尔值 false
。
预处理表达式的计算总是产生一个布尔值。预处理表达式的计算规则与常数表达式(第 7.15 节)相同,唯一的例外是:在这里,唯一可引用的用户定义实体是条件编译符号。
点击加载更多评论>>