9.5.2 Pre-processing expressions
Pre-processing expressions can occur in #if and #elif directives. The
operators !, ==, !=, && and || are
permitted in pre-processing expressions, and parentheses may be used for
grouping.
pp-expression::
whitespaceopt pp-or-expression whitespaceopt
pp-or-expression::
pp-and-expression
pp-or-expression whitespaceopt || whitespaceopt pp-and-expression
pp-and-expression::
pp-equality-expression
pp-and-expression whitespaceopt && whitespaceopt pp-equality-expression
pp-equality-expression::
pp-unary-expression
pp-equality-expression whitespaceopt == whitespaceopt pp-unary-expression
pp-equality-expression whitespaceopt != whitespaceopt pp-unary-expression
pp-unary-expression::
pp-primary-expression
! whitespaceopt pp-unary-expression
C# LANGUAGE SPECIFICATION
64
pp-primary-expression::
true
false
conditional-symbol
( whitespaceopt pp-expression whitespaceopt )
When referenced in a pre-processing expression, a defined conditional
compilation symbol has the boolean value
true, and an undefined conditional compilation symbol has the boolean value
false.
Evaluation of a pre-processing expression always yields a boolean value.
The rules of evaluation for a preprocessing
expression are the same as those for a constant expression (§14.15),
except that the only user-defined
entities that can be referenced are conditional compilation symbols.