預處理表達式可以出現在 #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 節)相同,唯一的例外是:在這裡,唯一可引用的用戶定義實體是條件編譯符號。