это ключевое слово, а не макрос - его интерпретация не имеет ничего общего с препроцессором, поэтому не является исключением.

репроцессор, кажется, предполагает, что неопределенные константы равны 0 для оценки#if условия.

Можно ли полагаться на это, или неопределенные константы дают неопределенное поведение?