Да, на это можно положиться.Стандарт C99 определяет в §6.10.1 ¶3:
После того, как все замены из-за расширения макроса и определенного унарного оператора были выполнены, все остальные идентификаторы заменены на номер pp 0
Редактировать
Извините, я подумал, что это был вопрос C;тем не менее, нет ничего сложного, в эквивалентном разделе в стандарте C ++ (§16.1 ¶4) говорится:
После всех замен из-за расширения макроса и определенного унарного оператора все оставшиеся идентификаторы иключевые слова, за исключением true
и false
, заменяются на номер pp 0
Единственное различие заключается в различной обработке true
и false
, что в Cне требуют специальной обработки, в то время как в C ++ они имеют особое значение даже на этапе предварительной обработки.